rails 部分渲染集合嵌套
rails render collection nests partial
我正在尝试使用 rails 渲染一个集合。
当遵循 rails 指南的 section on the topic.
时,这看起来是一个简单的操作
Partials are very useful in rendering collections. When you pass a collection to a partial via the :collection
option, the partial will be inserted once for each member in the 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>
有人知道为什么会这样吗?以及如何预防?提前致谢
事实上,他们没有。
这只是您的浏览器试图理解无效的 HTML 以构建可显示的 DOM。
<div="comment_wrapper">
这是无效的。标签具有可以为其分配值的属性。我猜它是关于 CSS(所以属性是 id
或 class
)并且页面上显然不止一次出现这种情况(只留下 class
):
<div class="comment_wrapper">
还有...
如果您在编写纯文本 HTML 时遇到困难,您可以切换到一些模板语言,例如 Slim or Haml,它可能会在无效代码上出错或产生意想不到的结果,以至于错误将是显而易见的。但是,了解底层语言 (HTML) 有助于自信地构建标记。最重要的是,天哪,这是一门额外的语言!以下是您在 Slim 中的部分外观:
.comment_wrapper
p.comment_name= comment.name
p.comment_date= comment.created_at
p.comment_body= comment.body
考虑一下,如果这对您来说太过分了,请随时留在 ERB。
我正在尝试使用 rails 渲染一个集合。 当遵循 rails 指南的 section on the topic.
时,这看起来是一个简单的操作Partials are very useful in rendering collections. When you pass a collection to a partial via the
:collection
option, the partial will be inserted once for each member in the 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>
有人知道为什么会这样吗?以及如何预防?提前致谢
事实上,他们没有。
这只是您的浏览器试图理解无效的 HTML 以构建可显示的 DOM。
<div="comment_wrapper">
这是无效的。标签具有可以为其分配值的属性。我猜它是关于 CSS(所以属性是 id
或 class
)并且页面上显然不止一次出现这种情况(只留下 class
):
<div class="comment_wrapper">
还有...
如果您在编写纯文本 HTML 时遇到困难,您可以切换到一些模板语言,例如 Slim or Haml,它可能会在无效代码上出错或产生意想不到的结果,以至于错误将是显而易见的。但是,了解底层语言 (HTML) 有助于自信地构建标记。最重要的是,天哪,这是一门额外的语言!以下是您在 Slim 中的部分外观:
.comment_wrapper
p.comment_name= comment.name
p.comment_date= comment.created_at
p.comment_body= comment.body
考虑一下,如果这对您来说太过分了,请随时留在 ERB。