use*_*363 1 ruby-on-rails ruby-on-rails-4
如何在Rails 4中找到为控制器定义的控制器方法?我环顾四周,Rails.application找到定义的命名路由,但不是定义的方法.
如果要列出特定控制器内定义的所有方法(即.UsersController):
>> UsersController.instance_methods(false)
=> [:new, :create, :edit, :update, :update_remote, :user_params]
Run Code Online (Sandbox Code Playgroud)
如果你只想要public方法:
>> UsersController.public_instance_methods(false)
=> [:new, :create, :edit, :update, :update_remote]
Run Code Online (Sandbox Code Playgroud)
如果您需要整个方法列表,也需要来自祖先的方法,请使用true(或不使用参数,因为它是默认值)调用这些方法:
UsersController.instance_methodsUsersController.public_instance_methods更多文档:http://ruby-doc.org//core-2.2.0/Module.html#method-i-instance_methods
instance_methods
返回一个数组,其中包含接收器中公共和受保护实例方法的名称.对于模块,这些是公共和受保护的方法; 对于一个类,它们是实例(而不是单例)方法.如果可选参数为false,则不包括任何祖先的方法.
public_instance_methods
返回定义的公共实例方法的列表.如果可选参数为false,则不包括任何祖先的方法.
或者,如果您需要获取"本地"方法,包括其他模块中包含的方法,您可以通过以下方式实现:
u = UsersController.new
u.methods - u.class.superclass.instance_methods
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
161 次 |
| 最近记录: |