Jquery Rails 4应用程序有时(不可预测地)使用不同的(错误的)HTTP方法发出请求

Jquery Rails 4应用程序有时(不可预测地)使用不同的(错误的)HTTP方法发出请求,jquery,ruby-on-rails,ruby-on-rails-4,routing,routes,Jquery,Ruby On Rails,Ruby On Rails 4,Routing,Routes,我的rails应用程序有时(不可预测地)在发出请求时使用不需要的HTTP方法/动词 到处都是。例如,在登录时,有时会向用户发出适当的POST请求/sign_in,有时会发出GET请求(显然无法登录,只是重新加载页面)。注销也是一样:有时会发出相应的删除请求,有时会发出GET请求(这导致臭名昭著的“找不到id为sign_的用户”)。这也会发生在其他资源和控制器上,而不仅仅是用户资源。因此,这不是在我的注销链接_中指定“delete”方法的问题(我已经这样做了) 这与链接到的和形式为的发生在一个明显

我的rails应用程序有时(不可预测地)在发出请求时使用不需要的HTTP方法/动词

到处都是。例如,在登录时,有时会向用户发出适当的POST请求/sign_in,有时会发出GET请求(显然无法登录,只是重新加载页面)。注销也是一样:有时会发出相应的删除请求,有时会发出GET请求(这导致臭名昭著的“找不到id为sign_的用户”)。这也会发生在其他资源和控制器上,而不仅仅是用户资源。因此,这不是在我的注销链接_中指定“delete”方法的问题(我已经这样做了)

这与链接到的和形式为的发生在一个明显的(令人沮丧的)随机方式各地

我认为这是一些jquery的东西,但是我有jQueryRails gem,并且在application.js中需要jquery和jquery_js

关于这种行为的原因有什么想法吗请帮帮我

以下是成功和失败注销的网络日志和终端输出,例如:

成功注销:

Network log:
Request Method:POST
Status Code:302 Moved Temporarily
content-type:text/html; charset=utf-8

Terminal:
Started DELETE "/users/sign_out" for 191.176.4.78 at 2015-10-31 20:32:56 +0000
Processing by Devise::SessionsController#destroy as HTML
Network log:
Request Method:POST
Status Code:302 Moved Temporarily
Content-Type:application/x-www-form-urlencoded

Terminal:
Started GET "/users/sign_out" for 191.176.4.78 at 2015-10-31
20:36:03 +0000 Processing by UsersController#show as HTML
注销失败:

Network log:
Request Method:POST
Status Code:302 Moved Temporarily
content-type:text/html; charset=utf-8

Terminal:
Started DELETE "/users/sign_out" for 191.176.4.78 at 2015-10-31 20:32:56 +0000
Processing by Devise::SessionsController#destroy as HTML
Network log:
Request Method:POST
Status Code:302 Moved Temporarily
Content-Type:application/x-www-form-urlencoded

Terminal:
Started GET "/users/sign_out" for 191.176.4.78 at 2015-10-31
20:36:03 +0000 Processing by UsersController#show as HTML
这表明,在成功请求时,内容类型为text/html;charset=utf-8并且在失败的尝试中是应用程序/x-www-form-urlencoded。你知道为什么这些类型随机不同吗

以下是我的一些文件:

Gemfile

source 'https://rubygems.org'

gem 'rails',        '4.2.2'
gem 'bootstrap-sass', '~> 3.3', '>= 3.3.5.1'
gem 'sass-rails',   '5.0.2'
gem 'uglifier',     '2.5.3'
gem 'coffee-rails', '4.1.0'
gem 'jquery-rails', '~> 4.0', '>= 4.0.5'
gem 'turbolinks',   '2.3.0'
gem 'jbuilder',     '2.2.3'
gem 'devise', '~> 3.5', '>= 3.5.2'
gem 'sdoc',         '0.4.0', group: :doc

group :development, :test do
  gem 'sqlite3',     '1.3.9'
  gem 'byebug',      '3.4.0'
  gem 'web-console', '2.0.0.beta3'
  gem 'spring',      '1.1.3'
end

group :test do
  gem 'minitest-reporters', '1.0.5'
  gem 'mini_backtrace',     '0.1.3'
  gem 'guard-minitest',     '2.3.1'
end

group :production do
  gem 'pg',             '0.17.1'
  gem 'rails_12factor', '0.0.2'
end
routes.rb

Rails.application.routes.draw do

  root 'static_pages#home'

  get 'about' => 'static_pages#about'

  devise_for :users, controllers: { registrations: "registrations" }
  resources :users, :only => [:show, :edit, :update]
  resources :competitions, :only => [:index, :show, :create, :destroy]
  resources :attempts, :only => [:show, :create, :update, :destroy]
  resources :votes

end
application.js

//= require jquery
//= require jquery_ujs
//= require bootstrap
//= require turbolinks
//= require_tree .
登录表单:new.html。(举个例子,因为问题不限于此表单)




我想你应该试试
gem“设计可加密”

也许这会解决问题。

你能用这个上下文发布你的浏览器网络日志或控制台吗?@Rubyrider好的,我把日志添加到问题中了。他们告诉我,在成功的请求中,内容类型是text/html;charset=utf-8,在失败的尝试中是application/x-www-form-urlencoded。你知道为什么这些类型是随机不同的吗?嗯,这似乎不是一个设计或用户资源相关的问题。它发生在其他资源上。