繁体   English   中英

在渲染STI对象数组时,Rails共享相同的部分

[英]Rails share same partial when rendering array of STI objects

我的应用程序实现了单表继承,以解决不同类型用户的逻辑: Admin, Client, Agent具有类似功能的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' %>会这样做,但事实并非如此!

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

尝试传递显式收集选项。

您可以执行以下操作:

 <tbody>
   <% @users.each do |user| %>
     <%= render :partial => 'users/user', :locals => {:user => user} %>
   <% end %>
 </tbody>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM