【发布时间】:2011-12-27 18:31:04
【问题描述】:
我将 Devise 1.4.9 身份验证 gem 与我的 Rails 3.1 应用程序一起使用,当我单击任何链接时,我会遇到路由错误。当我点击退出链接时会发生以下情况:
Routing Error
No route matches [GET] "/users/sign_out"
我正在用这种方法创建链接:
<%= link_to('Sign Out', destroy_user_session_path, :method => :delete) %>
这是链接在源代码中的呈现方式:
<a href="/users/sign_out" data-method="delete" rel="nofollow">Sign Out</a>
我的布局标题中有这一行:
<%= javascript_include_tag :defaults %>
这些行在我的 application.js 文件中:
//
// = require jquery
// = require jquery_ujs
// = require_tree .
这里是相关的 rake 路由输出:
new_user_session GET /users/sign_in(.:format) {:action=>"new", :controller=>"devise/sessions"}
user_session POST /users/sign_in(.:format) {:action=>"create", :controller=>"devise/sessions"}
destroy_user_session DELETE /users/sign_out(.:format) {:action=>"destroy", :controller=>"devise/sessions"}
user_password POST /users/password(.:format) {:action=>"create", :controller=>"devise/passwords"}
new_user_password GET /users/password/new(.:format) {:action=>"new", :controller=>"devise/passwords"}
edit_user_password GET /users/password/edit(.:format) {:action=>"edit", :controller=>"devise/passwords"}
PUT /users/password(.:format) {:action=>"update", :controller=>"devise/passwords"}
cancel_user_registration GET /users/cancel(.:format) {:action=>"cancel", :controller=>"devise/registrations"}
user_registration POST /users(.:format) {:action=>"create", :controller=>"devise/registrations"}
new_user_registration GET /users/sign_up(.:format) {:action=>"new", :controller=>"devise/registrations"}
edit_user_registration GET /users/edit(.:format) {:action=>"edit", :controller=>"devise/registrations"}
PUT /users(.:format) {:action=>"update", :controller=>"devise/registrations"}
DELETE /users(.:format) {:action=>"destroy", :controller=>"devise/registrations"}
我已经尝试了该线程中的几乎所有内容,但均无济于事:
No route matches "/users/sign_out" devise rails 3
我已经多次重启了服务器。
这个问题似乎在过去出现过,但没有一个描述的解决方案改变了这种行为,我很难过。
【问题讨论】:
-
嘿@wrburgess 你能检查一下你的Gemfile 中是否有
gem 'jquery-rails'。我也很好奇您是否可以在浏览器中检查您的源代码并检查是否包含 jquery_ujs。您应该会看到类似于:<script src="/assets/jquery_ujs.js?body=1" type="text/javascript"></script> -
我确实加载了那个 gem,但脚本不是......可能是问题
标签: ruby-on-rails ruby devise gem