根与 slug rails 4 路由
Posted
技术标签:
【中文标题】根与 slug rails 4 路由【英文标题】:Root with slug rails 4 routing 【发布时间】:2015-08-15 01:46:51 【问题描述】:目前我正在使用friendlyID
gem,如果用户通过身份验证,我只想将我的应用程序重定向到带有 slug 的根目录。
网址
http://localhost:3000/companyABC/dashboard
这是我当前的代码
authenticated :employer do
root to: redirect("/:slug/dashboard"), as: :employer_root
end
namespace :company, path: "/:slug" do
resources :dashboard
namespace :settings do
resources :collaborators
end
end
但问题是当我登录时它会将我重定向到
http://localhost:3000/:slug/dashboard
【问题讨论】:
恐怕你需要明确设置root
。您可以做的是在绑定到 root 的操作中检查用户是否已通过身份验证并相应地呈现不同的视图
【参考方案1】:
据我所知,您不能在路由中使用 lambda,因此无法在路由中访问数据库并获取公司的 slug。
但是如果你使用devise,你可以覆盖方法#after_sign_in_path_for,所以用户不会被重定向到root_url,而是被重定向到指定的url。例如:
class ApplicationController < ActionController::Base
def after_sign_in_path_for(user)
company_dashboards_url(user.company)
end
end
更多信息在这里:devise docs about after_sign_in_path_for
【讨论】:
非常感谢您给我提示。我想我可以请求路线中的 slug。以上是关于根与 slug rails 4 路由的主要内容,如果未能解决你的问题,请参考以下文章
rails_3_question :as => 为啥在设置 slug 后我的 /posts/new 路由到 posts/show
Rails 路由:如何重命名(嵌套)资源块中的 params-Hash 键?