2015-10-31 1 views
2

Приложение 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 %> 
+0

Можете ли вы опубликовать свой сетевой журнал или консоль в этом контексте? – Rubyrider

+0

@Rubyrider Хорошо, я добавил журналы на вопрос. Они показывают мне, что при успешных запросах тип контента - text/html; charset = utf-8 и является приложением/x-www-form-urlencoded при неудачных попытках. Любая идея о том, почему типы случайным образом отличаются друг от друга? –

ответ

0

Я думаю, вы должны попробовать gem "devise-encryptable" Может быть, это решит проблему.

+0

Ну, это не похоже на проблему с разработкой или с пользовательским ресурсом. Это происходит с другими ресурсами. –

Смежные вопросы