我使用Devise时发生UrlGenerationError

时间:2018-09-15 12:11:04

标签: ruby-on-rails ruby devise

我将devise安装到我的Rails应用程序并访问localhost:3000 / login。 但是,发生了如下错误。

ActionController::UrlGenerationError in Devise::Sessions#new

提取的来源是这个。

     </button>
    <ul class="list-group" id="menu-list">
    <li class="list-group-item list-group-item-action"><%= link_to "test1", :controller => "career", :action => "index" %></li>
    <li class="list-group-item list-group-item-action"><%= link_to "test2", :controller => "skill", :action => "index" %></li>
  </ul>
  </div>

它说 '没有路线匹配{:action =>“ index”,:controller =>“设计/职业”}'

原因很明显。 'devise /'附加在控制器名称上,因此Rails找不到URL。

routes.rb是这个。

  devise_for :users
  devise_scope :user do
    get 'login', to: 'devise/sessions#new'
  end

请教我为什么将“ devise /”附加到控制器,以及如何删除“ devise /”。

对不起,我英语不好。 谢谢。

1 个答案:

答案 0 :(得分:0)

我认为宝石devise提供了一种身份验证机制,因此,如果您想添加更多路径(URL),则必须识别routes.rb文件中的URL。

关于您的代码,您没有career控制器,因此将引发错误。

我认为,您可能会生成新的控制器,而不使用devise/career旨在授权的devise

假设我们将careers生成为控制器

rails g controller careers index

然后将按以下方式生成代码;

  1. app/controllers/careers_controller.rb
  2. routes.rb文件中将有get 'careers/index'
  3. 也将产生职业观点。

您可以在routes.rb

中添加更多以下代码
    resources :careers, only: [:index]

因此...从您那里可以重写代码,如下所示;

<li class="list-group-item list-group-item-action"><%= link_to "test1", careers_path %></li>