【问题标题】:Rendering partials from a helper method从辅助方法渲染部分
【发布时间】:2012-09-11 01:41:48
【问题描述】:

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

 <%= 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 } 一起工作?还有其他写法吗?

非常感谢。

【问题讨论】:

  • f 作为辅助方法中的参数传递

标签: ruby-on-rails ruby-on-rails-3.2


【解决方案1】:

您需要将f 传递给addRound

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

在视图中

<%= addRound(f) %>

【讨论】:

  • 感谢 Deefour。这非常有效(希望这只是我的菜鸟错误)。我在这里有一个相关的问题:stackoverflow.com/questions/12358993/…。具体来说,我无法在 link_to 上调用 javascript 来执行它应该做的事情(单击时调用 addRound 方法)。有什么想法吗?再次感谢。
  • 很高兴为您提供帮助;看起来你有其他人帮助解决另一个问题。祝你好运。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-06-03
  • 1970-01-01
  • 2014-03-24
  • 1970-01-01
  • 1970-01-01
  • 2011-03-27
相关资源
最近更新 更多