我正在尝试基于变量运行某个私有控制器方法,因此:
def new
@doc = Doc.new
#see private methods
@template.name.parameterize.underscore
respond_to do |format|
format.html
end
end
其中@template.name.parameterize.underscore
将是同一控制器中私有方法的确切名称。那可能吗?如果没有办法实现这一目标?
更新
改为使用此代码:
template = @template.name.parameterize.underscore.to_sym
@doc.send template
给我一个NoMethodError:undefined method 'newsletter' for #<Doc:blah>
,即使我在控制器中有一个名为newsletter
的私有方法。
答案 0 :(得分:1)
您可以使用send
方法发送任意消息。
由于您希望从控制器向控制器发送消息,因此您只需使用send template
来调用template
变量中存储的方法。