有什么可能的解决方案(无法找到用户' id' =注销)?我很感激任何意见。我能找到的只是对bug的引用。提前谢谢。
ActiveRecord::RecordNotFound (Couldn't find User with 'id'=logout):
app/controllers/users_controller.rb:16:in `show'
users_controller.rb
line 15: def show
line 16: @user = User.find(params[:id])
line 17: end
routes.rb
delete 'logout' => 'sessions#destroy'
视图/布局/ application.html.erb
<% if logged_in? %>
<li><%= link_to current_user.name, current_user %></li>
<li><%= link_to "Log out", logout_path, method: :delete %></li>
<% else %>
<li><%= link_to "Log in", login_path %></li>
<% end %>
答案 0 :(得分:0)
因此,您点击logout_path
生成的网址(/logout
?),而不是转到您的sessions#destroy
操作,它会转到您的users#show
行动,失败,因为您的操作在"logout"
params[:id]
这可能是由routes.rb
文件中较早的另一条路线引起的,该路线会影响您在问题中显示的路线。例如。你可能会有这样的事情:
resources :users, path: '/'
...或者您可能拥有普通的用户资源,但是您的delete
行嵌套在用户名称空间或其他内容中:
resources :users
# then lower in your file something like...
namespace :users do
delete 'logout' => 'sessions#destroy'
end
这些都不会导致你所看到的内容,所以如果上述内容没有指出正确的方向,那么请在问题中添加完整的config/routes.rb
文件和/或{的输出{1}}
答案 1 :(得分:0)
由于某种原因,Firefox在点击注销时没有发送http删除请求,而是一个get,所以不得不在routes.rb中添加一行来处理http get log for logout。特别感谢约翰!