0

私の見解では、以下のようにアクションを削除するためのリンクがあります:

<%= link_to 'Destroy', powersaving, :method => :delete, :data => { :confirm => 'Are you sure?' } %>

そして私のコントローラーには、before_filterがあります

before_filter :authenticate_user!, :only => [:index, :show, :show_details, :destroy]

そして、私もこのように試しました:

before_filter :authenticate_user!, :except => [:new, :create]

削除アクション

def destroy
    if current_user.admin?
      @powersaving = Powersaving.find(params[:id]) 
      @powersaving.destroy  
    end

    respond_to do |format|
      format.html { redirect_to powersavings_url }
      format.json { head :no_content }
    end
  end

「削除」リンクをクリックすると、「よろしいですか?」と表示されます。ポップアップで[OK]をクリックすると、Deviseのsign_inページに移動します。現在のユーザーが「admin」としてサインインしている場合は、削除アクションを有効にする必要があります。私は何を間違っていますか?

4

2 に答える 2

-1

事はです。アプリケーション以外のすべての HTTP メソッドGETは、認証の CSRF トークンをサーバーに送信する必要があります。
この問題を回避する 1 つの方法はapplication_controller.rb、その行にコメントを入れることprotect_from_forgeryです。これは、CSRF チェックなしでアプリを終了することは推奨されないため、現時点で機能させる方法にすぎません。
後で、フォームのないリンクとカスタム アクションで CSRF トークンをチェックしない方法を見つけることができます。

于 2012-07-20T12:27:20.213 に答える