1

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

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' 选项定义了两条同名的路由

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

4

1 回答 1

2

正如@vimsha 指出的那样,这是一个已知问题,就我而言,最好的解决方法是执行以下操作:

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。

于 2014-07-21T16:00:33.400 回答