2017-01-10 23 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_filter .....」,只需將它改爲「before_action」即可。厚臉皮的代碼甚至可能在您的ApplicationController中。 –

+0

只需使用查找和替換工具,並用'before_action'替換'before_filter'。免費的Atom文本編輯器有一個相當不錯的查找和替換工程,在您的整個項目目錄中。否則,你可以使用grep'grep -rl before_filter app/controllers | xargs sed -i's/before_filter/before_action/g'' – max

回答

2

這只是折舊警告,如果你升級你的應用程序軌道5.1可以變成錯誤,因爲在登錄明確提到的,你可以在那裏使用的是before_filter通過控制器搜索解決它,將其替換爲before_action

before_action在早期版本的rails中執行同樣的操作(在請求在控制器中執行操作之前運行一些代碼)before_filter

0

DEPRECATION WARNING行來自您的application_controller.rb,只是將before_filter更改爲before_action並且此警告將消失。

Can't verify CSRF token authenticity是防止返回正確結果的實際錯誤。如果您的控制器不需要CSRF令牌JSON請求,您應該添加一行類似下面的控制器:

skip_before_action :verify_authenticity_token, if: :json_request?