2013-05-13 60 views

回答

452

我們可以seeActionController::Basebefore_action只是爲before_filter一個new syntax

但是所有before_filters語法are deprecated的Rails 5.0,將在的Rails 5.1

+0

但他們可能會考慮depracating一次鋼軌4變得穩定... – 2013-05-13 10:55:20

+38

一方面,自嘲有感覺,但是,另一方面,在rails和ruby中有一個很好的做法,可以爲一種方法提供多個別名,以便您可以在不同意義下使用它。 – freemanoid 2013-05-13 11:04:40

+4

在4.2中,他們並不反對,但是由於不鼓勵它從文檔中刪除。 http://edgeguides.rubyonrails.org/4_2_release_notes.html#action-pack-notable-changes – onetwopunch 2014-12-03 23:18:45

26

這僅僅是一個名稱的改變被刪除。 before_action更具體,因爲它在動作之前被執行。

58

這只是語法的差異,在Rails應用程序有CRUD,基本七項行動的名字指數創建顯示更新編輯破壞

軌道4,5使開發者友好的過濾器行動之前之前更改語法。前

before_action調用方法,我們聲明的行動,就像

before_action :set_event, only: [:show, :update, :destroy, :edit] 

set_event是總是會調用之前節目,更新,編輯和刪除的方法。

-1

要弄清楚before_action和before_filter之間的區別,我們應該理解動作和過濾器之間的區別。

動作是您可以路由到的控制器的一種方法。 例如,您的用戶創建頁面可能會路由到UsersController#new - new是此路由中的操作。

針對控制器操作的過濾器 - 在他們之前,之後或周圍運行。 這些方法可以通過重定向或設置公用數據給控制器中的每個動作來暫停動作處理。

軌道4 - > _action

的Rails 3 - > _filter

相關問題