2012-12-26 3 views
2

저는 레일 초보자이며 렌더 메서드가 어떻게 작동하는지 이해하는 데 어려움을 겪고 있습니다. 난 레일을위한 조상 플러그인과 관련된이 railscasts를 따라 가고 있습니다. 이해가 안되는 부분은 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 

. 사용자가 설문 조사를 작성한 다음 가져올 수 있습니다. 따라서 레일즈는 두 가지 유형의 뷰를 렌더링하기를 원합니다. 설문 조사를 만들기위한 것이고 설문 조사를받는 것입니다. 그래서 조상 노드를 표시하기 위해 별도의 부분을 만들고 싶습니다. 그러나 render (message) 메서드를 강제로 다른 부분을 렌더링하는 방법을 모르겠습니다.

도움을 주시면 감사하겠습니다.

감사합니다.

답변

0

누군가이 질문을 제기하는 경우. 이것이 내가 일을 끝내기 위해 끝낸 것입니다. 이것이 최선의 해결책으로 간주 될지 모르겠지만 저에게는 효과적입니다. 내가 바보 같은 짓을하면 내 코드를 수정하십시오.

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 
관련 문제