2011-07-19 11 views
0

私はdevise gem(1.4.2)とレール(3.0.7)を使用しています。いくつかのチェックボックスといくつかのjqueryを持つビューを持っています。ボックスをチェックすると、私のコントローラの1つで処理されるポストがあります。残念ながら、私がこれを行うと、現在のユーザーに署名します。これを避ける簡単な方法はありますか?ありがとう!宝石とjqueryを作成する

jqueryのコード:

$(‘.do_some_action).live(‘change’, function(){ 
    $.post(‘/my_model/do_some_action’, {param1 : param1Value}) 
    return false 
}) 

ベースコントローラ:

class AuthorizedController < ApplicationController 
    before_filter :authenticate_user! 
    check_authorization 
    load_and_authorize_resource 

    rescue_from CanCan::AccessDenied do |exception| 
    flash[:error] = exception.message 
    redirect_to request.referer 
    end 
end 

特定のコントローラ:あなたはCSFRのトークンを渡していないよう

class MyModelsController < AuthorizedController 
    ... 
    def some_action 
    ... 
    end 
end 

-Jordan

+3

我々....必要....コード... – user482594

+0

我々....必要....コード... - user482594 3分前 – fl00r

+0

まだ十分ではないコード:)これがにあります何か具体的なことを言う抽象 – RocketR

答えて

1

サウンズあなたのJAXリクエスト。

HTMLでcsrf_meta_tagを呼び出すと、CSFRメタタグが設定されていることを確認してください。次に、JavaScriptの下のビットを使用して、CSFRタグがどのAJAX要求にも設定されていることを確認できます。

$.ajaxSetup({beforeSend: function(xhr) {xhr.setRequestHeader("X-CSRF-Token", $("meta[name='csrf-token']").attr("content")); }}); 

また、あなたのコントローラに以下を追加することによって、そのアクションのCSFRチェックを無効にすることができますが、JavaScriptの選択肢が良いだろう。

skip_before_filter :verify_authenticity_token 
関連する問題