[前][次][番号順一覧][スレッド一覧]

rails:3776

From: 前島真一 <netwillnet@g...>
Date: Fri, 1 Jun 2012 17:37:07 +0900
Subject: [rails:3776] Re: safari と firefox の挙動の違いについて

前島です。  

> <a href="/session" data-method="delete" rel="nofollow">ログアウト</a>

というリンクをクリックすると、 普通なら GET /session というリクエストを発行します。
DELETEメソッドになるのは、jquery-rails という gem 経由で jquery_ujs.js を読み込んでいて、jquery_ujs.js が data-method="delete" のような属性を持つリンクをクリックした挙動を差し替えているためです。

なので、例えば js をオフにすると GET /session というリクエストになります。jsまわりの設定を確認してみるといいと思います。

日付:2012年6月1日金曜日、時刻:11:42、差出人:Nobukazu TAKAI:

> 高井と言います。
> 基本的なことかもしれませんが,どうしても解決できないので皆様のお知恵をお借りできないでしょうか?
> rails のバージョンは 3.2.3 です。
>  
> <%= link_to 'ログアウト', session_path, :method => 'delete' %>
>  
> で記述して作成された HTML は以下のようになります(safari でも Firefox でも同じことを確認しました)。
> <a href="/session (view-source:http://localhost:3000/session)" data-method="delete" rel="nofollow">ログアウト</a>
> これを safari で実行するとログには
> Started DELETE "/session" for 127.0.0.1 at Fri Jun 01 11:24:12 +0900 2012 Processing by SessionsController#destroy as HTML
> と希望通りの動作をします。
> しかし Firefox で同じサイトでログアウトを実行すると
> Started GET "/session" for 127.0.0.1 at Fri Jun 01 11:25:24 +0900 2012 AbstractController::ActionNotFound (The action 'show' could not be found for SessionsController):
> となり show を実行しようとします。
> routes.rb には
> resource :session
> と記述しています。
> rake routes の実行結果は
> %rake routes session POST /session(.:format) sessions#create new_session GET /session/new(.:format) sessions#new edit_session GET /session/edit(.:format) sessions#edit GET /session(.:format) sessions#show PUT /session(.:format) sessions#update DELETE /session(.:format) sessions#destroy  
>  
> となります。
> route の設定から確かに GET /session は show を実行することは分かりますが,そもそもHTMLでそのような動作を設定していないのになぜ Firefox では DELETE ではなく GET となってしまうのか全く分かりません。
> どなたか解決策をご存知の方がいましたら,教えて頂けると助かります。
>  
> 宜しくお願い致します。  



[前][次][番号順一覧][スレッド一覧]

   @  3775 2012-06-01 04:42 [nocturne_2_eflat_9_2] safari と firefox の挙動の違いについて  
->    3776 2012-06-01 10:37 ┗[netwillnet@g...     ]                                       
   @  3777 2012-06-02 00:49  ┗[nocturne_2_eflat_9_2]