根与 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

AngularJS UI 路由器根范围 slug 路由

Rails 路由:如何重命名(嵌套)资源块中的 params-Hash 键?

如何在 laravel 路由中创建不包括某些 slug 的 slug 路由?

多个 Slugs 冲突管理路由

如何在 rails 4 中重新加载路由 /config/routes/*?