afa*_*f12 1 ruby ruby-on-rails devise
我知道不同网站上有很多关于这个问题的问题.我已经尝试了很多东西,但仍然无法使用DELETE方法获得链接.
我已经创建了一个空的rails应用程序
版本:
在我安装了devise gem之后,我运行了以下命令:
rails generate devise:install
rails generate devise User
Run Code Online (Sandbox Code Playgroud)
我尝试过的修复如下:
初始链接:
<%= link_to "Sign out", destroy_user_session_path %>
Run Code Online (Sandbox Code Playgroud)
我在ticks中添加了删除方法,没有它们:
<%= link_to "Sign out", destroy_user_session_path, :method => 'delete' %>
<%= link_to "Sign out", destroy_user_session_path, :method => :delete %>
Run Code Online (Sandbox Code Playgroud)
将此添加到application.html.erb:
<%= javascript_include_tag :defaults %>
Run Code Online (Sandbox Code Playgroud)
我在assets/javascripts/application.js中取消注释了这些行:
= require jquery
= require jquery_ujs
Run Code Online (Sandbox Code Playgroud)
我也试过让GET链接工作,从config/initializers/devise.rb更改了这一行
config.sign_out_via = : delete
Run Code Online (Sandbox Code Playgroud)
对此:
config.sign_out_via = :get if Rails.env.test?
Run Code Online (Sandbox Code Playgroud)
无论我尝试什么,DELETE链接都会导致:
No route matches [GET] "/users/sign_out"
Run Code Online (Sandbox Code Playgroud)
GET链接不起作用:
没有路线匹配[GET]"/"
当然,我已经尝试重启服务器了.
耙路线包含:
destroy_user_session DELETE /users/sign_out(.:format) devise/sessions#destroy
Run Code Online (Sandbox Code Playgroud)
提前致谢.
在devise.rb中
找 config.sign_out_via = :delete
改成 config.sign_out_via = :get
如果你使用:get确保你正在使用:method =:get,如果你正在使用:delete using:method =>:delete in link
在生产中你可能需要交换它,所以你应该使用if语句来检查RAILS_ENV
在您的示例中,您可能正在开发模式下运行而不是测试,这就是它可能无法正常工作的原因.
并重新启动您的服务器,因为它是初始化程序.
| 归档时间: |
|
| 查看次数: |
3484 次 |
| 最近记录: |