16

是否可以使用辅助方法渲染局部变量,您还可以从调用辅助方法的视图中传递局部变量?例如,当我直接在视图中包含此代码时,它会正确呈现部分:

 <%= render :partial => "add_round", :locals => { :f => f } %>

然后我把它移到一个辅助方法:

def addRound
  render :partial => "add_round", :locals => { :f => f }
end

然后我再次从视图中调用它:

 <%= addRound %>

这不适用于代码中包含的 :locals => { :f => f }。它返回此错误:未定义的局部变量或方法“f”。但是,addRound 方法确实渲染了以下内容:

def addRound
  render :partial => "add_round"
end

以这种方式编写它允许我渲染不需要传递局部变量的部分(例如纯文本字符串)。但是我怎样才能让它与包含的 :locals => { :f => f } 一起工作?有没有另一种写法?

非常感谢。

4

1 回答 1

30

你需要传递faddRound

def addRound(f)
  render partial: "add_round", locals: { f: f }
end

并且在视图中

<%= addRound(f) %>
于 2012-09-11T01:43:45.237 回答