Root with slug rails 4 路由

Root with slug rails 4 routing

目前我正在使用 friendlyID gem,如果用户已通过身份验证,我只想将我的应用程序重定向到带有 slug 的根目录。

url

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

据我所知,您不能在路由中使用 lambda,因此无法访问数据库并在路由中获取公司的 slug。

但是如果你使用 devise,你可以覆盖方法 #after_sign_in_path_for,这样用户将不会被重定向到 root_url 而是指定的 [=22] =] 代替。例如:

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