我有一个Bootstrap模式,通过Rails部分渲染,我需要这个模态与新和编辑 Rails视图共享。在这部分中,有一些用户的列表,我需要检查它们,当用户保存它时,用户的选择将参数发送到主视图(新建或编辑)。此外,当从编辑视图中弹出时,我需要此部分用于已选择的用户。 那么如何做到这一点?
以下是截图:
我需要在每个用户的select列下面有一个复选框,如果正确调用它,也会将所选内容发送到“调用者视图”!
我新视图中的代码
<div class="form-group">
<%= f.label :members %>
<span class="glyphicon glyphicon-user"></span>
<div class="row">
<div class="col-sm-6">
<% if user.empty? %>
<p>Cannot assign memebers<p>
<% else %>
<!-- Button trigger modal -->
<button class="btn btn-primary btn-sm" data-toggle="modal" data-target="#myModal">
Select Members
</button>
<%= render 'layouts/select_user' %>
<% end %>
</div>
</div>
</div>
以下是名为"layouts/_select_user.html.erb"
<!-- Bootstrap Modal -->
<div class="modal fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
<h4 class="modal-title" id="myModalLabel">Select Available Members</h4>
</div>
<div class="modal-body">
<table class="table table-striped">
<tr>
<th>Select</th>
<th>Username</th>
<th>Job Title</th>
</tr>
<% User.where(:manager => false, :admin => false, :locked => false, :company_id => nil).each do |user| %>
<tr>
<td><%#= checkbox here %></td>
<td><%= link_to user.username.capitalize, edit_admin_user_path(user) %></td>
<td><%= user.job_title %></td>
</tr>
<% end %>
</table>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">Cancel</button>
<button type="button" class="btn btn-primary">Save changes</button>
</div>
</div>
</div>
</div>
答案 0 :(得分:1)
如果我找到了你,你正在尝试更新多个用户对象(通过选中每个用户对象旁边的复选框)。
首先,从gui运行查询不是最佳方法,从控制器操作(new / edit)填充这些用户对象。然后,您可以通过:locals
哈希:
def new
@users = User.where(:manager => false, :admin => false, :locked => false, :company_id => nil)
end
<%=render :partial => 'layouts/select_user', :locals => {:users => @users}
现在,在您的部分中,您可以使用@users变量,而不是直接调用查询。
复选框参考对我来说似乎很松散。就User对象而言,它意味着什么?此值是否会更改User对象的含义(例如,它是一个布尔值,告诉您用户是否属于某种类型:员工,雇主等)。如果是,请在users表中添加一个新字段。您可以将此新字段用于复选框。
现在,为了更新这些用户,请在表单中包含@users对象,并创建一个控制器操作来处理此更新。当您从模态提交表单时,它将向您发送一组表单对象。您可以从控制器操作迭代这些表单对象并相应地处理对象。
这是使用多个表单来更新多个对象的good example。
同时查看Ryan Bates关于同一主题的“轨道广播”节目:
Complex Form 1
Complex Form 2
Complex Form 3
答案 1 :(得分:-1)
没有“来电者”,因为您的模态视图是内联HTML,因此您应该能够访问模式表单数据