0

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

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在控制器中调用了一个私有方法。

4

1 回答 1

1

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

由于您想将消息从控制器发送到控制器,因此您可以使用send template来调用存储在template变量中的方法。

于 2013-07-23T03:16:32.870 回答