rails渲染集合巢部分

时间:2015-07-30 19:56:54

标签: ruby-on-rails ruby erb partials

我试图用rails渲染一个集合。 当遵循导轨指南时,这看起来很简单。 section on the topic

  

部分在渲染集合时非常有用。当您通过:collection选项将集合传递给部分时,将为集合中的每个成员插入一次部分:

所以遵循这个建议我说

<%= render partial: "comments/comment", collection: @post.comments %>

在部分views/comments/_comment.html.erb中,我有以下内容

<div="comment_wrapper">
<p class="comment_name"><%= comment.name %></p>
<p class="comment_date"><%= comment.created_at %></p>
<p class="comment_body"><%= comment.body %></p>
</div>

现在不知怎的,所有这些部分都嵌套在一起。 所以,让我说我有2条评论然后就会像这样呈现

<div="comment_wrapper">
<p class="comment_name"><%= comment.name %></p>
<p class="comment_date"><%= comment.created_at %></p>
<p class="comment_body"><%= comment.body %></p>
     <div="comment_wrapper">
     <p class="comment_name"><%= comment.name %></p>
     <p class="comment_date"><%= comment.created_at %></p>
     <p class="comment_body"><%= comment.body %></p>
     </div>
</div>

有人理解为什么会这样吗?以及如何预防呢?提前致谢

1 个答案:

答案 0 :(得分:4)

事实上,他们没有。

只是您的浏览器试图理解无效的HTML来构建可显示的DOM。

<div="comment_wrapper">

这是无效的。标签具有可以为其分配值的属性。我猜它是关于CSS的(因此该属性为idclass)并且在页面上显然不止一次出现(仅留下{{1 }}):

class

另外...

如果您在编写纯HTML时遇到困难,可以切换到某些模板语言,例如SlimHaml,这可能会导致无效代码出错或产生意外结果这个错误很明显。但是,了解底层语言(HTML)有助于自信地构建标记。最重要的是,geez,它是一个额外的语言!这是你在Slim中看待你的部分:

<div class="comment_wrapper">

考虑一下,如果对你来说太过分了,请随意留在ERB。