【问题标题】:Rails 4 Devise custom routesRails 4 设计自定义路线
【发布时间】:2014-12-24 23:04:44
【问题描述】:

我在我的应用程序中使用 'devise'、'~> 3.4.1' 和 rails 4。当我尝试创建自定义路线时,我会遇到错误。我还需要在我的 route.rb 中添加什么

错误: ArgumentError:“设计/会话”不是受支持的控制器名称。 这可能导致潜在的路由问题。 See

routes.rb

   Rails.application.routes.draw do
    devise_for :users

   devise_scope :user do
    get 'register', to: 'devise/registrations#new', as: :register
    get 'login', to: ' devise/sessions#new', as: :login
 end

登录路径出现问题。

【问题讨论】:

    标签: ruby-on-rails ruby ruby-on-rails-4 devise


    【解决方案1】:

    您的代码中有一个错字,“devise/sessions#new”之前有一个空格。

    这个,

    get 'login', to: ' devise/sessions#new', as: :login
    

    应该是

    get 'login', to: 'devise/sessions#new', as: :login
    

    【讨论】:

    • 就是这样!非常感谢。
    【解决方案2】:

    试试这个代码:

    devise_scope :user do
        get '/login' => 'devise/sessions#new'
        get '/register' => 'devise/registrations#new'
    end
    

    【讨论】:

      【解决方案3】:

      你需要这样做

      devise_for :users, path_names: {
        sign_in: 'login', sign_out: 'logout',
        password: 'secret', confirmation: 'verification',
        registration: 'register', edit: 'edit/profile'
      }
      

      来源: http://www.rubydoc.info/github/plataformatec/devise/ActionDispatch/Routing/Mapper:devise_for

      【讨论】:

      • 我改变了我的代码,你说什么都没改变。顺便说一句,它是 device_scope 的别名。它不会有什么不同。谢谢
      • @Prabhakar 是的。我知道了。您是使用自定义控制器还是使用设计自己的控制器?
      • 我没有使用任何自定义控制器。
      • 你能检查一下这个路径是否存在于你的项目 app/views/devise/sessions 中吗?
      • 我正在创建路径在设计/会话中不存在的自定义路由。它适用于 Rails 3,但不适用于 Rails 4
      【解决方案4】:
       devise_for  :user, :path => ' ', :path_names => { :sign_in => "login" :sign_up => "register" }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-10-10
        • 1970-01-01
        • 1970-01-01
        • 2013-12-16
        • 1970-01-01
        相关资源
        最近更新 更多