我将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 /”。
对不起,我英语不好。 谢谢。
答案 0 :(得分:0)
我认为宝石devise
提供了一种身份验证机制,因此,如果您想添加更多路径(URL),则必须识别routes.rb
文件中的URL。
关于您的代码,您没有career
控制器,因此将引发错误。
我认为,您可能会生成新的控制器,而不使用devise/career
旨在授权的devise
。
假设我们将careers
生成为控制器
rails g controller careers index
然后将按以下方式生成代码;
app/controllers/careers_controller.rb
routes.rb
文件中将有get 'careers/index'
您可以在routes.rb
resources :careers, only: [:index]
因此...从您那里可以重写代码,如下所示;
<li class="list-group-item list-group-item-action"><%= link_to "test1", careers_path %></li>