2017-01-10 12 views
1

何が起こっているのですか?私はJSONデータ型でajax呼び出しでデータを追加しようとしています。しかし、データを追加しようとするたびに、画像に示されているようにエラーが表示されます。駆除警告:before_filterは推奨されなくなり、Rails 5.1で削除されます。代わりにbefore_actionを使用

Rails log in terminal

私はそれは常にhtml形式への対応だと思いますが、JSON形式に応答しません。

def new 
    @batch = Batch.new 
    respond_to do |format| 
    format.json 
    format.html 
    end 
end 

def create 
    @batch = Batch.new(batch_param) 
    puts "/n/n/n/n name: #{@batch.name} /n/n/n/n" 
    respond_to do |format| 
    if @batch.save 
     format.json { render json: @batch, status: :created, location: @batch } 
     format.html { redirect_to @batch, notice: "Save process completed!" } 
    else 
     format.html { 
     flash.now[:notice]="Save proccess coudn't be completed!" 
     render :new 
     } 
     format.json { render json: @batch.errors, status: :unprocessable_entity} 
    end 
    end 
end 
+0

コントローラの上部付近にbeforeアクション(以前のフィルタ)を記述する必要があります。 "before_filter ....."という行がある場合は、単にbefore_actionに変更してください。素敵なコードは、あなたのApplicationController内にあるかもしれません。 –

+0

findとreplaceのツールを使い、 'before_filter'を' before_action'に置き換えてください。無料のAtomテキストエディタは、あなたのプロジェクトディレクトリ全体でうまく機能しています。それ以外の場合は、grep 'grep -rl before_filter app/controllers | xargs sed -iの/ before_filter/before_action/g '' – max

答えて

2

明確にあなたがbefore_filterを使用しているあなたのコントローラーを検索して、それを解決して、それを置き換えることができますログに述べたようにこれは、あなたが5.1レールにアプリをアップグレードする場合は、エラーになることができますだけで償却警告ですbefore_action

before_actionbefore_filterは、以前のバージョンのレールでは同じこと(リクエストがコントローラのアクションに当たる前にいくつかのコードを実行)を実行します。

0

DEPRECATION WARNINGapplication_controller.rbから、before_filterbefore_actionに変更され、この警告は消えます。

Can't verify CSRF token authenticityは、正しい結果が返されないようにする実際のエラーです。コントローラがJSONリクエストのCSRFトークンを必要としない場合は、コントローラに次のような行を追加する必要があります。

skip_before_action :verify_authenticity_token, if: :json_request? 
関連する問題