我有一个观点,在视图中我称之为部分:
<%= render 'shared/users', locals: { users: @users } %>
我的部分看起来像:
/shared/_users.html.erb
<% @users.each do |user| %>
Outside the inner partial user works <%= user.inspect %>
<%= render 'shared/user_detail', locals: { user: user} %>
<% end %>
我的用户详细信息部分如下:
/shared/_user_detail.html.erb
This is a user: <%= @user.inspect %>
目前只为用户对象输出nil。
为什么我的用户对象不会传递给部分?
我也尝试了这个:
This is a user: <%= user.inspect %>
答案 0 :(得分:3)
从您的视图中删除locals: { users: @users }
(您呈现第一个部分的位置),@users
将在所有嵌套视图中可用,因此您的代码将变为:
<%= render 'shared/users' %>
在users
部分删除locals
,但保留user
变量:
# /shared/_users.html.erb
<% @users.each do |user| %>
Outside the inner partial user works <%= user.inspect %>
<%= render 'shared/user_detail', user: user %>
<% end %>
最后,在user
partial:
user_detail
变量
# /shared/_user_detail.html.erb
This is a user: <%= user.inspect %>
现在应该可以了。