【问题标题】:`add_route': Invalid route name, already in use: 'root' (ArgumentError)`add_route':无效的路由名称,已在使用:'root'(ArgumentError)
【发布时间】:2014-06-17 15:07:05
【问题描述】:

我正在使用 rails 4.1.1 和 ruby​​ 2.1.1 并且在设计时遇到问题,即我的路线..我以前使用过很多次

devise_for :users

get 'pages/index'

# Route to Devise Login Page
  devise_scope :user do
    root to: "devise/sessions#new"
  end

# Directing the user after login
  authenticated :user do
    root :to => 'pages#index'
  end

但我得到了错误

`add_route': Invalid route name, already in use: 'root'  (ArgumentError)

尝试启动服务器时..我可以看到 root 被使用了两次,但就像我说的那样,我过去已经能够做到这一点..有没有办法解决这个问题

谢谢

【问题讨论】:

    标签: ruby-on-rails ruby devise


    【解决方案1】:

    在 stackoverflow 上找到这条有用的评论

    对于 Rails 4.0,您必须确保路径的名称是唯一的 助手,如 root 到:“dashboard#show”,如::authenticated_root。 否则,经过身份验证的根和正常的根路由结束 他们的路径助手具有相同的名称,Rails 4.0 不再 允许

    所以我将经过身份验证的根更改为这样的助手

     # Directing the user after login
     authenticated :user do
       root :to => 'pages#index', as: :authenticated_root
     end
    

    【讨论】:

    • 谢谢。在从 Rails3 迁移到 Rails4 时帮助了我!
    • 那么如果我们想指定/ url 是否用户登录,我们需要创建一个帮助器def actual_root_path if user_signed_in? authenticated_root_path else root_path end end?听起来很蹩脚...
    猜你喜欢
    • 2016-04-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-08
    • 1970-01-01
    • 1970-01-01
    • 2016-05-01
    • 1970-01-01
    相关资源
    最近更新 更多