簡體   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