1

したがって、これはかなり一般的な問題のようです。私はgithubとStackoverflowの問題トラッカーをくまなく調べましたが、解決策をまだ見つけていません-変更config.sign_out_via = :deleteする以外にconfig.sign_out_via = :get-これは明らかにかなり悪い習慣です。

私の問題は、何を試しても、クライアントが所定のまたはgetの代わりにリクエストを送信することです。deletepost

私からしてみれば
<%= link_to "sign out", destroy_user_session_path, :method => :delete %>

レーキルートが与える

Anchor$ rake routes
                  Prefix Verb   URI Pattern                                   Controller#Action
                    root GET    /                                             home#index
        new_user_session GET    /login(.:format)                              devise/sessions#new
            user_session POST   /login(.:format)                              devise/sessions#create
    destroy_user_session DELETE /logout(.:format)                             devise/sessions#destroy
           user_password POST   /password(.:format)                           devise/passwords#create
       new_user_password GET    /password/new(.:format)                       devise/passwords#new
      edit_user_password GET    /password/edit(.:format)                      devise/passwords#edit
                         PATCH  /password(.:format)                           devise/passwords#update
                         PUT    /password(.:format)                           devise/passwords#update
cancel_user_registration GET    /cancel(.:format)                             devise/registrations#cancel
       user_registration POST   /                                             devise/registrations#create
   new_user_registration GET    /sign_up(.:format)                            devise/registrations#new
  edit_user_registration GET    /edit(.:format)                               devise/registrations#edit
                         PATCH  /                                             devise/registrations#update
                         PUT    /                                             devise/registrations#update
                         DELETE /                                             devise/registrations#destroy
         user_activities GET    /users/:user_id/activities(.:format)          activities#index
                         POST   /users/:user_id/activities(.:format)          activities#create
       new_user_activity GET    /users/:user_id/activities/new(.:format)      activities#new
      edit_user_activity GET    /users/:user_id/activities/:id/edit(.:format) activities#edit
           user_activity GET    /users/:user_id/activities/:id(.:format)      activities#show
                         PATCH  /users/:user_id/activities/:id(.:format)      activities#update
                         PUT    /users/:user_id/activities/:id(.:format)      activities#update
                         DELETE /users/:user_id/activities/:id(.:format)      activities#destroy
                   users GET    /users(.:format)                              users#index
                         POST   /users(.:format)                              users#create
                new_user GET    /users/new(.:format)                          users#new
               edit_user GET    /users/:id/edit(.:format)                     users#edit
                    user GET    /users/:id(.:format)                          users#show
                         PATCH  /users/:id(.:format)                          users#update
                         PUT    /users/:id(.:format)                          users#update
                         DELETE /users/:id(.:format)                          users#destroy

ルート.rb

root :to => "home#index"
  devise_for :users

  resources :users do
    resources :activities
  end

js マニフェスト

//= require jquery
//= require jquery_ujs
//= require bootstrap
//= require turbolinks
//= require_tree .

application.html.erb<%= javascript_include_tag "application" %>には、 ujs を含める のに適したものが含まれており、レンダリングされたヘッダーには以下が含まれます。

<script src="/assets/jquery.js?body=1">
<script src="/assets/jquery_ujs.js?body=1">

ターボリンクスと何か関係があるのではないかと感じたのでdata-no-turbolink、葉巻は試しませんでした。何があっても、クライアントは常に、Started GET "/users/sign_out"UsersController#show へのルーティングを維持するものを送信します。

どんな洞察も役に立ちます!

4

2 に答える 2

0

あなたの見解でこれを試してください

<a data-method="delete" href="<%= destroy_user_session_path %>">Logout</a>
于 2013-11-03T06:35:24.520 に答える
0

私にも同じ問題があります:(今のところRails 4で、少なくとも今できることはルーティングすることだけです

get '/users/sign_out' => 'devise/sessions#destroy'

*ただし、このアプローチは CSRF 攻撃に対して脆弱です

于 2013-12-13T07:34:44.127 に答える