将数据传递给rails部分

时间:2013-04-07 08:54:40

标签: ruby-on-rails

编辑:解决方案完美运作。 dom_id

我正在尝试将数据传递给部分数据并使用它来更改用户的角色。现在它只会改变一个用户的角色。渲染时,它仅显示User.first

的角色并对其进行操作

呈现的位置。我在当地人传递用户。根据{{​​3}}我使用了第二个答案,因为第一个答案没有用,给了我错误。

<%= 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">&#215;</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 %>

1 个答案:

答案 0 :(得分:4)

您有关于将本地人传递给部分正确的原始问题。问题是使用非唯一的ID对来揭示隐藏的表单。因此,揭示链接总是显示div的第一个出现的ID,因此总是改变第一个用户的角色。

尝试更新这两行以使用Rails dom_id()帮助程序根据基础显示模式文档创建data-reveal-idid的唯一匹配对:

<a href="roles#<%= user.id %>" data-reveal-id="<%= dom_id(user) %>" 
class="button" type="button">Change role</a>

<div id="<%= dom_id(user) %>" class="reveal-modal">