繁体   English   中英

使用辅助方法渲染Rails局部

[英]Rendering rails partials in helper methods

我是Rails的初学者,在理解render方法的工作原理时遇到了一些麻烦。 我跟随着这个railscasts,它与rails的ancestry插件有关。 我难以理解的部分是RyanB提供的nested_forms帮助器方法。

def nested_messages(messages)
  messages.map do |message, sub_messages|
  render(message) + content_tag(:div, nested_messages(sub_messages), :class =>     
  "nested_messages")
  end.join.html_safe
end

调用render(message)时,rails会渲染_message.html.erb部分。 我将如何迫使它呈现不同的局部?

我已经尝试过这样的事情:

def form_nodes(nodes)
 nodes.map do |node, sub_nodes|
   render(:partial => 'mypartial', :locals => node) + content_tag(:div, form_nodes(sub_nodes), :class => "nested_nodes")
 end.join.html_safe
end

但这会导致错误:

undefined method `keys' for

我正在使用Ancestry创建调查表。 允许用户创建调查,然后进行调查。 因此,我希望Rails渲染两种不同类型的视图。 一种用于创建调查,另一种用于进行调查。 因此,我想创建一个单独的局部以显示我的祖先节点,但是我不确定如何强制render(message)方法呈现另一个局部。

任何帮助,将不胜感激。

谢谢

万一有人遇到这个问题。 这就是我最终要使其正常工作所要做的。 我不知道这是否被认为是最好的解决方案,但这对我有用。 如果我做了一些愚蠢的事情,请随时纠正我的代码。

def form_nodes(nodes, answers)
     nodes.map do |node, sub_nodes|
       render(:partial => 'folder/mypartial', :locals => { :node => node, :answers => answers, :f => builder}) + content_tag(:div, form_nodes(sub_nodes,answers), :class => "nested_nodes")
     end.join.html_safe
 end

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM