【问题标题】:passing data to a rails partial将数据传递到 Rails 部分
【发布时间】:2013-04-08 03:50:56
【问题描述】:

编辑:解决方案完美运行。 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">&#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 %>

【问题讨论】:

  • 这不起作用,虽然我觉得应该这样做。它仅显示和更改第一个用户的角色。只要他们是管理员,谁登录都没有关系。我想知道为什么?
  • 如果您将 User.first 传递给部分,它将每次都为您的数据库中的第一个用户呈现数据。在循环中调用渲染部分行,为您希望该表单显示的每个用户调用它
  • 我愿意。我发布了部分渲染的地方。它在我的用户的循环中。这是在我的用户控制器的index.html.erb 中。我的用户控制器索引操作提供@users = User.all
  • 是的,我最近尝试过,得到了相同的结果。作为更好的健全性检查,我删除了部分中的所有非 erb。我拿出了所有的 div 和所有东西。现在它直接在表格中呈现并正常工作。似乎这可能与基础 4 显示模式以及如何使用 data-reveal-id 调用它有关。我的解决方案不干净。
  • 所以你的data-reveal-id 不是唯一的。 “更改角色”链接总是会在页面中显示该 ID 的第一次出现,因此它总是显示第一个用户的表单。您需要执行一些操作,例如将 user.id 附加到

标签: ruby-on-rails


【解决方案1】:

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

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

<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">

【讨论】:

  • 道具好先生。两天来我一直试图确定这一点。你帮助我了解了我将在明天研究的 Rails 中的一个简洁的助手。现在是凌晨 3 点,在那个美妙的音符上,我必须睡觉。再次感谢你。
  • 很高兴我能帮上忙,还有一个 dom_class() 帮手可以看看
  • 是的,我正在阅读它们以供将来参考。好东西要知道。我不知道我是否会找到它,因为我不知道我在寻找什么。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-05-31
  • 2020-12-14
  • 2012-08-28
  • 2013-01-16
  • 2011-06-09
  • 1970-01-01
相关资源
最近更新 更多