我试图用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>
有人理解为什么会这样吗?以及如何预防呢?提前致谢
答案 0 :(得分:4)
只是您的浏览器试图理解无效的HTML来构建可显示的DOM。
<div="comment_wrapper">
这是无效的。标签具有可以为其分配值的属性。我猜它是关于CSS的(因此该属性为id
或class
)并且在页面上显然不止一次出现(仅留下{{1 }}):
class
如果您在编写纯HTML时遇到困难,可以切换到某些模板语言,例如Slim或Haml,这可能会导致无效代码出错或产生意外结果这个错误很明显。但是,了解底层语言(HTML)有助于自信地构建标记。最重要的是,geez,它是一个额外的语言!这是你在Slim中看待你的部分:
<div class="comment_wrapper">
考虑一下,如果对你来说太过分了,请随意留在ERB。