Приложение rails иногда (непредсказуемо) использует нежелательный HTTP-метод/глагол при выполнении запросов.Приложение Rails 4 иногда (непредсказуемо) обрабатывает запросы с различными (неправильными) методами HTTP
Это происходит повсеместно. Например, при входе в систему иногда выполняется соответствующий запрос POST для пользователей/sign_in, и иногда выполняется запрос GET (который, очевидно, не может войти и просто перезагружает страницу). То же самое для выписки: иногда выполняется соответствующий запрос DELETE, а в других случаях выполняется запрос GET (что приводит к печально известному «Не удалось найти пользователя с« id »= sign_out»). Это происходит и с другими ресурсами и контроллерами, а не только с ресурсом пользователя. Поэтому не стоит задавать метод «delete» в моем выводе link_to (который я уже сделал).
Это происходит с помощью link_to и form_for повсюду в кажущемся (и разочаровывающем) случайном порядке.
Я думал, что это была некоторая вещь jquery, но у меня есть jquery-rails gem и требуется jquery и jquery_ujs в application.js.
Любые идеи относительно того, что может быть причиной такого поведения? Пожалуйста, помогите мне.
Вот сетевой журнал и выходной разъем для успешных и неудачных знаковые аутов в качестве примера:
Успешный знак из:
Network log:
Request Method:POST
Status Code:302 Moved Temporarily
content-type:text/html; charset=utf-8
Terminal:
Started DELETE "https://stackoverflow.com/users/sign_out" for 191.176.4.78 at 2015-10-31 20:32:56 +0000
Processing by Devise::SessionsController#destroy as HTML
Failed знак из:
Network log:
Request Method:POST
Status Code:302 Moved Temporarily
Content-Type:application/x-www-form-urlencoded
Terminal:
Started GET "https://stackoverflow.com/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 и является application/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 , (Подобно тому, как, например, Потому что проблема не ограничивается этой формой)
<%= form_for(resource, as: resource_name, url: session_path(resource_name)) do |f| %>
<div class="field">
<%= f.label :email, class: "control-label", for: "inputEmail" %><br />
<%= f.email_field :email, autofocus: true, class: "form-control input-lg", id: "inputEmail" %>
</div>
<div class="field">
<%= f.label :password, class: "control-label", for: "inputPassword" %>
<%= f.password_field :password, autocomplete: "off", class: "form-control input-lg", id: "inputPassword" %>
</div>
<% if devise_mapping.rememberable? -%>
<div class="field">
<%= f.check_box :remember_me %>
<%= f.label :remember_me %>
</div>
<% end -%>
<div class="actions">
<%= f.submit "LOG IN", class: "btn btn-lg btn-success fill-width margin-top-small" %>
</div>
<% end %>
Можете ли вы опубликовать свой сетевой журнал или консоль в этом контексте? – Rubyrider
@Rubyrider Хорошо, я добавил журналы на вопрос. Они показывают мне, что при успешных запросах тип контента - text/html; charset = utf-8 и является приложением/x-www-form-urlencoded при неудачных попытках. Любая идея о том, почему типы случайным образом отличаются друг от друга? –