设计经过验证的路线

时间:2013-01-08 04:08:45

标签: ruby-on-rails devise routes

我正在使用设备进行身份验证,并希望将经过身份验证的用户路由到位置#show。用户属于某个位置。我在路线中试过了几件事,包括这个。

authenticated :user do
    match 'locations/:id' => 'locations#show', :as => :root
  end

不幸的是,即使登录,也不会改变一个东西并路由到家庭#index。我的完整路线文件

 authenticated :user do
    match 'locations/:id' => 'locations#show', :as => :root
  end
  root :to => "home#index"
  resources :locations
  devise_for :users
  resources :users

有关如何让root用户登录时显示位置ID的任何想法?

3 个答案:

答案 0 :(得分:1)

您可以通过在终端中运行以下命令来查看与设计相关的所有可用路线。

rake routes

答案 1 :(得分:1)

您可以在经过身份验证的块中使用具有不同名称的root,如下所示:

authenticated :user do
    root to: 'locations#show', :as => authenticated_root
end

答案 2 :(得分:0)

我最终在我的应用程序控制器

中首先定义了登录后路径
def after_sign_in_path_for(resource)
    if resource.class == User
      location_path(resource.location) 
    elsif resource.class == Location
      location_path(resource) 
    end
  end

然后我像这样设置我的路线

 authenticated :user do
    devise_for :users do
      get "/", :to => "devise/sessions#new"
    end
    root :to => 'devise/sessions#new'
  end