【问题标题】:Ruby on Rails - Devise Error: undefined local variable or methodRuby on Rails - 设计错误:未定义的局部变量或方法
【发布时间】:2013-07-28 01:54:00
【问题描述】:

我一直在查看 SO 和谷歌的解决方案,但我无法弄清楚我做错了什么。我正在尝试使用来自 Devise 的 after_sign_in_path_for 助手。我查看了有关此帮助程序 here 的文档。

但我在提交登录凭据时收到以下错误:

NameError (undefined local variable or method `dashboard_url' for #
<Devise::SessionsController:0x007fcc36079d88>):
app/controllers/application_controller.rb:27:in `after_sign_in_path_for'

这是我正在使用的:

config/routes.rb

My::Application.routes.draw do
  get "login/index"
  devise_for :users, path_names: {sign_in: "login"} do
    get '/users/sign_out' => 'devise/sessions#destroy'
  end
 get "dashboard/index"
 root :to => "login#index"
 get 'dashboard' => 'dashboard#index', as: :dashboard_url
 get ':controller(/:action(/:id(.:format)))'
end

rake routes 中显示的路径如下:

耙路线

  dashboard_url GET    /dashboard(.:format)                   dashboard#index

任何帮助将不胜感激!谢谢。

【问题讨论】:

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


    【解决方案1】:

    在你的路线中修复它

    get 'dashboard' =&gt; 'dashboard#index', as: :dashboard

    Rake 路由显示您的路由助手,不附加 _path_url 后缀。

    【讨论】:

    • 谢谢尼克。我是 RoR 新手,还没有掌握路线的概念。
    【解决方案2】:

    ApplicationController.rb

    def after_sign_in_path_for(resource)
        users_dashboard_path
    end
    

    Routes.rb

    namespace :users do
      get 'dashboard' => 'dashboard#index', as: :dashboard
    end
    

    注意:我已经在 Devise 创建的用户文件夹中创建了我的仪表板控制器。 (像这样 => 'users/dashboard_controller.rb') 希望这个工作示例对您有所帮助

    【讨论】:

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