我正在通过Michael Hartl的Ruby on Rails教程。在清单9.19 中,他定义了一个名为signed_in_user的私有方法,但当他在代码顶部调用它时,他使用以下行:
before_filter :signed_in_user, only: [:edit, :update]
为什么他在调用signed_in_user时添加冒号?
答案 0 :(得分:1)
signed_in_user
实际上并未在该行上被调用。被调用的方法是before_filter
,这是一个Rails方法。 :signed_in_user
是该方法的一个参数,这是方法所采用的一种参数 - 一个符号,它指定在另一个参数中指定的控制器操作之前在运行时调用的方法(或者所有操作中的所有操作)这个控制器,默认情况下。)
答案 1 :(得分:0)
因为Object.send将符号作为第一个参数。
因此,如果您想使用Object.send
来调用方法,则需要符号。