似乎这是一个非常普遍的问题,我已经遵循了google的许多修复程序,但是我的退出问题仍然存在。
这就是我所拥有的:Rails 4.1.1,Devise 3.2.4。哦,顺便说一句,我不是我的用户,而是我的模型AppUser
查看中
As AppUser: <br>
<% if app_user_signed_in? %>
Signed in as: <%= current_app_user.email %> <br>
<%= link_to "Sign Out", destroy_app_user_session_path, method: :delete %>
<% else %>
<%= link_to "Sign Up", new_app_user_registration_path %> <br>
<%= link_to "Sign In", new_app_user_session_path %>
<% end %>
/config/routes.rb
Rails.application.routes.draw do
devise_for :app_users
root 'home#index'
end
这些是耙子路线的部分路线
Prefix Verb URI Pattern Controller#Action
new_app_user_session GET /app_users/sign_in(.:format) devise/sessions#new
app_user_session POST /app_users/sign_in(.:format) devise/sessions#create
destroy_app_user_session DELETE /app_users/sign_out(.:format) devise/sessions#destroy
在application.js上
//= require jquery
//= require jquery_ujs
//= require_tree .
在application.html.erb上,我也包括了这个
<%= javascript_include_tag 'application' %>
但是,我仍然收到get route错误:
No route matches [GET] "/app_users/sign_out"
为什么????
行。因此,在/config/initializer/devise.rb上将:delete更改为:get可以解决问题,方法::delete当然也已删除。
# The default HTTP method used to sign out a resource. Default is :delete.
config.sign_out_via = :get
但是我还是不明白吗?为什么?如果我在devise.rb上保留:delete,那我遗漏了什么?
========================
[解决]我可能应该在这里编辑状态更新:
我终于弄明白了为什么。即使我正确设置了javascript等,但由于我从“ ActionController :: Base”而不是“ ApplicationController”继承了我的控制器类,所以它没有加载。
在我处理项目时,我注意到其他页面上的link_tos也无法发送:delete方法。
一旦我修复了继承,它们都将起作用。
加。
我终于弄明白了为什么。即使我正确设置了javascript等,但由于我从“ ActionController :: Base”而不是“ ApplicationController”继承了我的控制器类,所以它没有加载。
在我处理项目时,我注意到其他页面上的link_tos也无法发送:delete方法。
一旦我修复了继承,它们都将起作用。
加。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句