我在渲染时以这种方式遍历集合:
<%= render partial: 'reply', collection: @replies %>
我想在此渲染调用 BUT 中分配本地人,他们将是与该迭代实例有关的本地人。因此,例如,如果回复中有一个名为 post 的父级关联,则我希望采用与传递 locals 选项相同的方式进行分配。不幸的是,据我所知这是不可能的,因此必须在局部中显式创建分配:
_reply.html.erb
<% post = reply.post %>
<div>
<%= post.name %>
...
</div>
是否可以在初始渲染调用中传递本地变量?
答案 0 :(得分:0)
从理论上讲,您不可能做到这一点,这里有不同的选择,让它像您现在一样,并在您的reply.html.erb内部,用本地帖子呼吁另一部分。 / p>
您甚至可以为此更改代码,以使其更短
<%= render @replies %>
,它将按照名称约定查找您的部分回复。在那个人里面
<%= render partial: 'post', locals: {post: reply.post} %>
如果此选项适用于您的情况。
或者,不要将其呈现为集合,而是使用each
<% @replies.each do |reply| %>
<%= render reply, locals {post: reply.post} %>
<% end %>
您有更多选择,但目前找不到您想要的选择。