编辑:解决方案完美地起作用了。dom_id
我正在尝试传递数据到一个部分,并使用它来更改用户的角色。现在它只会更改一个用户的角色。当它被渲染时,它只显示并处理User.first
的角色。
它被渲染的位置。我在本地传递了用户。根据this post中的第二个答案,我使用了第一个答案不起作用,并给我带来了错误。
<%= render :partial => 'roles', :locals => { :user => user } %>
以下是部分的_role.html.erb文件。
<div id="roleModal" class="reveal-modal">
<%= semantic_form_for user, :url => user_path(user), :html => {:method => :put } do |f| %>
<h3>Change Role</h3>
<div class="reveal-modal-body">
<%= f.input :roles, :as => :check_boxes, :input_html => { :selected => user.role_ids } %>
</div>
<a class="close-reveal-modal">×</a>
<%= f.action :submit, :as => :button %>
<% end %>
<% @users.each do |user| %>
<tr>
<td><%= link_to user.name, user %></td>
<td><%= user.email %></td>
<td><%= user.created_at.to_date %></td>
<td><%= user.roles.first.name.titleize unless user.roles.first.nil? %></td>
<td>
<a href="roles#<%= user.id %>" data-reveal-id="roleModal" class="button" type="button">Change role</a>
<%= render :partial => 'roles', :locals => { :user => user } %>
</td>
</tr>
<% end %>
index.html.erb
中。我的用户控制器索引操作提供了@users = User.all
。 - doubleAdata-reveal-id
不是唯一的。 "更改角色" 链接总是会显示页面中该 ID 的第一个出现,因此它总是会显示第一个用户的表单。 你需要做一些类似于将user.id
追加到 <div> id 和 <a> 中,以便它们匹配起来。 - xkickflip