我的应用实现了单表继承,以解决具有类似功能的不同类型用户的逻辑:Admin, Client, Agent
。所有这些都写入User
表。
渲染users#index
页面时,我希望所有页面共享相同的部分,因为我基本上都是相同的。
#app/controllers/users_controller.rb
def index
@users=User.all
end
<!-- app/views/users/index.html.erb -->
<div class="row">
<h2>
Users
</h2>
</div>
<div class="row">
<table class="table table-striped">
<thead>
<tr>
<th>User type</th>
<th>Id</th>
<th>Username</th>
</tr>
</thead>
<tbody>
<%= render @users, as: :user, partial: 'users/user' %>
</tbody>
</table>
</div>
<!-- app/views/users/_user.html.erb -->
<tr>
<th><%= user.class.name %></th>
<th><%= user.id.to_s %></th>
<th><%= user.username%></th>
</tr>
每当我尝试转到索引页面时,都会收到Missing partial admins/admin
类型的错误。
我认为<%= render @users, as: :user, partial: 'users/user' %>
行会做,但事实并非如此!
答案 0 :(得分:2)
<%= render partial: "users/user", collection: @users, as: :user %>
尝试传递显式收集选项。
答案 1 :(得分:1)
您可以执行以下操作:
<tbody>
<% @users.each do |user| %>
<%= render :partial => 'users/user', :locals => {:user => user} %>
<% end %>
</tbody>