3

我一直在检查 SO 和谷歌的解决方案,但我无法弄清楚我做错了什么。我正在尝试使用after_sign_in_path_forDevise 的助手。我在这里查看了有关此助手的文档。

但是在提交登录凭据时出现以下错误:

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

这是我正在使用的:

配置/路由.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

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

4

2 回答 2

4

在您的路线中修复它

get 'dashboard' => 'dashboard#index', as: :dashboard

耙路线显示您的路线助手,不附加_path_url后缀。

于 2013-07-28T02:11:16.497 回答
2

应用控制器.rb

def after_sign_in_path_for(resource)
    users_dashboard_path
end

路由.rb

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

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

于 2015-10-26T12:05:36.490 回答