我的部分对象没有正确传递给内部部分

时间:2017-04-14 15:41:26

标签: ruby-on-rails

我有一个观点,在视图中我称之为部分:

<%= 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 %>

1 个答案:

答案 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 %>

现在应该可以了。