Rails:基于变量运行私有控制器方法

时间:2013-07-23 01:20:35

标签: ruby-on-rails ruby-on-rails-3

我正在尝试基于变量运行某个私有控制器方法,因此:

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的私有方法。

1 个答案:

答案 0 :(得分:1)

您可以使用send方法发送任意消息。

由于您希望从控制器向控制器发送消息,因此您只需使用send template来调用template变量中存储的方法。