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