gpt4 book ai didi

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

转载 作者:数据小太阳 更新时间:2023-10-29 08:12:18 25 4
gpt4 key购买 nike

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

这是我拥有的: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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com