2012-07-20 75 views
2

我有下面的代码在我的Rails应用程序3.2:为什么Rails显示页面上的所有信息?

<ul>    
      <% user_to_show.topics.each do |topic| %> 
      <li> <%= link_to topic.name, topic %> 
       <ul> 
       <%= topic.nodes.each do |node| %> 
        <li> <%= link_to node.title, node %> </li> 
       <% end %> 
       </ul> 
      </li> 
      <% end %>  
    </ul> 

当我去到用户页面,我希望它只是显示在该主题链接到每个主题和节点。它是这样做的,但是它最后还会显示每个节点的实际数据(见下文)。怎么来,如何修复它?

Sample Topic 
node1 
node2 

[#<Node id: 1, title: "node1", intro_content: "sample content", user_id: 2, date_modified: nil, created_at: "2012-07-19.." [etc..] #<Node id: 2, title: "node2", intro_content: "sample 2 content..", user_id: 2, etc.. ] 

回答

7

因为该行的:

<%= topic.nodes.each do |node| %> 

每个Ruby语句是一个表达式。所以每个方法都会返回一些东西(即使它是零)。所以如果你调用“each”,它会在循环完成后返回数组。所以,当你使用<%=时,它会在循环结束后写入这个数组。

你应该使用:

<% topic.nodes.each do |node| %> 
+0

谢谢,我想我应该抓住这一点。 – 2012-07-20 14:46:10

相关问题