我有一个组织视图,我想呈现一个部分视图,以便向组织用户展示一系列附加功能。为此,我设置了一个Bootstrap面板,在这个面板中我想渲染一个bootstrap Table,以显示属于组织的每个用户。我可以在没有表css的情况下正常工作(就像单独的div元素每行显示一个用户一样),但出于某种原因,当我创建一个表时,事物会为每个用户构建全新的表(包括thead部分)宾语。你能帮忙吗?
组织展示页面html:
<div class="col-md-6">
<ul class="users">
<div class="panel panel-default">
<div class="panel-heading float-left">
<% if current_user.admin? %>
<%= link_to "Add more users", add_user_path(current_user.organization), class: "btn btn-large btn-success btn-panel" %>
<% end %>
<h2 class="panel-title">Users:</h2>
</div>
<div class="panel-body panel-height">
<%= render partial: "users_index", collection: @users_index, as: :user %>
<br></br>
</div>
</div>
</ul>
</div>
我的users_index部分的html:
<div class="table-responsive">
<table class="table table-striped">
<thead>
<tr>
<th>Name</th>
<th>Action</th>
</tr>
</thead>
<tbody>
<tr>
<td>
<%= link_to user.name, user %>
</td>
<td>
<% if current_user.admin? && !current_user?(user) %>
<%= link_to "delete", user, method: :delete,
data: {confirm: "You sure?" },
class: "btn btn-sm btn-danger pull-right"%>
<% end %>
</td>
</tr>
</tbody>
</table>
</div>
定义users_index的地方(我的组织控制器显示功能):
def show
@organization = Organization.find(params[:id])
@users_index = @organization.users
end
我在这里做错了什么?
答案 0 :(得分:1)
在您的组织展示页面中,将表格代码放在渲染线
周围 <div class="panel-body panel-height">
<table class="table table-striped table-responsive">
<thead>
<tr>
<th>Name</th>
<th>Action</th>
</tr>
</thead>
<tbody>
<%= render partial: "users_index", collection: @users_index, as: :user %>
</tbody>
</table>
<br></br>
</div>
你的赞美就像
<tr>
<td>
<%= link_to user.name, user %>
</td>
<td>
<% if current_user.admin? && !current_user?(user) %>
<%= link_to "delete", user, method: :delete,
data: {confirm: "You sure?" },
class: "btn btn-sm btn-danger pull-right"%>
<% end %>
</td>
</tr>
看,当你渲染一个集合时,Rails会查找匹配的部分并为集合中的每个项目渲染它,这就是为什么你为每个用户得到一个表,你想要的只是一行在每个用户的表中,所以部分只包含表行代码。