ROR的原則有一項是: 不要重複自己(DRY: Don’t Repeat Yourself) – 撰寫出重複的程式碼是件壞事 那使用before_action的話,就可以收納很多重複的程式碼,不需要一直在每個function裡面都寫同一行程式碼,可以直接在開頭寫上before_action的功能,意義就是在每個funtion執行前先執行這個action。
before_action的意思就是要求 Rails在run controller下的 action 前要先跑指定的method。相對的after_action就是跑完 action 後才要跑的method,至於around_action就是之前之後都要跑(嘖嘖,真貪心)。
以下為before_filter的示範:
class TopicsController < ApplicationController
before_action :find_board
def index
@topics = @board.topics
end
def find_board
@board = Board.find(params[:id])
end
end