我正在通过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
来调用一个方法,一个符号是预期的。