Rails:在partial中使用collection呈现另一个partial

5

我有一个嵌套在部分集合中的部分。例如:

<= render partial: "users/user", collection: @users, as: :user %>

_user.html.erb部分中,我按照以下方式呈现另一个部分:
<%= render partial: "users/user_info", locals: {user: user}  %>

它的工作方式如下,但问题在于对于每个用户对象都会呈现_user_info.html.erb部分,这使其需要很长时间。我该如何避免这种情况?有什么建议吗?


1
我认为你的意思是在用户局部中呈现每个用户的部分 user_info。是这样吗? - Austio
@Austio 是的,没错。 - Kumar
你的本地变量 :user 将在 partial 的渲染过程中被共享。最好手动循环以获取 sub_partial 以获得正确的用户上下文。 - Austio
嗨@Austio,你能给一个sub_partial的例子吗?谢谢。 - MIA
3个回答

1

1
Rails只会正确缓存顶级局部模板。我的建议是使用[content_for][1]功能,将user_info局部模板也移到顶部。在你的主要布局中: [1]:https://apidock.com/rails/ActionView/Helpers/CaptureHelper/content_for
<%= render partial: "users/user_info", collection: @users, as: :user %>
<%= render partial: "users/user", collection: @users, as: :user %>

在你的 'user_info' 部分视图中:
<% content_for "user_info_#{user.id}" do %>
<!-- your user_info content -->
<% end %>

在您的“用户”部分中:
<!-- your user content -->
<%= content_for "user_info_#{user.id}"%>

在这种情况下,用户信息和用户部分模板都将被正确缓存,渲染所需的时间将更少。 [1]: https://apidock.com/rails/v3.0.0/ActionView/Helpers/CaptureHelper/content_for

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接