我正在通過Michael Hartl的Ruby on Rails教程進行工作。在清單9.19,他定義了一個名爲signed_in_user一個私有方法,但是當他在代碼的頂部稱之爲他使用以下行:在名稱前面調用Rails方法
before_filter :signed_in_user, only: [:edit, :update]
爲什麼他添加一個冒號當他打電話signed_in_user?
我正在通過Michael Hartl的Ruby on Rails教程進行工作。在清單9.19,他定義了一個名爲signed_in_user一個私有方法,但是當他在代碼的頂部稱之爲他使用以下行:在名稱前面調用Rails方法
before_filter :signed_in_user, only: [:edit, :update]
爲什麼他添加一個冒號當他打電話signed_in_user?
signed_in_user
實際上並未在該行上被調用。被調用的方法是before_filter
,這是一個Rails方法。 :signed_in_user
是該方法的一個參數,這就是該方法所採用的參數類型 - 一個符號,用於命名在運行時在另一個參數中指定的控制器動作之前調用的方法(或此控制器中的所有動作默認)。
因爲Object.send以符號作爲第一個參數。
所以,如果你想用Object.send
來調用一個方法,一個符號是預期的。