ruby-on-rails - Rails 设计 sign_out 没有路由匹配 [GET]

标签 ruby-on-rails ruby devise

这似乎是一个非常常见的问题,我已经遵循了谷歌的许多修复,但我的退出问题仍然存在。

这是我拥有的:Rails 4.1.1、Devise 3.2.4。哦,顺便说一句,我称我的模型为 AppUser 而不是 User

在 View 中

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

这些是rake路线的部分路线

                  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' %>

然而,我仍然收到获取路由错误:

No route matches [GET] "/app_users/sign_out"

为什么????

好的。 因此,将 :delete 更改为 :get on/config/initializer/devise.rb 解决了这个问题,方法:当然删除了 :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”继承了我的 Controller 类。

当我完成我的项目时,我注意到其他页面上的 link_tos 也无法发送 :delete 方法。

一旦我修复了继承,它们就都起作用了。

啊。

最佳答案

路线.rb

devise_scope :app_user do
  get "/app_users/sign_out" => "devise/sessions#destroy"
end

关于ruby-on-rails - Rails 设计 sign_out 没有路由匹配 [GET],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24131470/

相关文章:

ruby-on-rails - 索引显示顺序

ruby-on-rails - 设计:删除确认

ruby-on-rails - Rails CanCanCan 无模型 Controller 的能力问题

ruby-on-rails - Ruby on Rails 6 Postgres upsert_all 区分更新和插入

javascript - Mapbox/leaflet.js 更改悬停时标记的颜色

ruby-on-rails - Rails 4 和 Devise : Devise not saving new information (First Name, 姓氏,个人资料名称)

ruby-on-rails - 检查当前的设计操作和 View

javascript - 需要重新加载页面才能加载 JavaScript?

ruby - 哪些测试工具在 Ruby 中做什么?

ruby - 如何解析 ruby​​ BigDecimal 检查?