在Rails 4中不能多次定义根路由

时间:2014-07-21 15:41:34

标签: ruby-on-rails ruby-on-rails-4 rails-routing route-constraint

我的路线文件中有以下内容:

scope :constraints => lambda{ |req| req.session[:user_id].present? } do
  root "users#show"  
end

scope :constraints => lambda{ |req| req.session[:admin_id].present? } do
  root "brands#index"  
end

root "sessions#new"

此代码在Rails 3中运行良好,但是当我在Rails 4中使用它时,我收到以下错误消息:

  

无效的路由名称,已经在使用'root'(ArgumentError)。

     

您可能使用':as'选项

定义了两个具有相同名称的路由

有没有办法解决这个问题?发生了什么变化?

1 个答案:

答案 0 :(得分:2)

正如@vimsha指出的那样,它是known issue,在我的情况下,最好的解决方法是执行以下操作:

scope :constraints => lambda{ |req| req.session[:user_id].present? } do
  match '/', to: "users#index", via: :get  
end

scope :constraints => lambda{ |req| req.session[:admin_id].present? } do
  match '/', to: "brands#index", via: :get  
end

root "sessions#new"

Alles im ordinem。