如何在具有本地人的页面上多次呈现相同的部分

How do I render the same partial multiple times on a page with locals

在我的应用程序中,我有一个笔记的概念...在页面上,我用一个编辑按钮列出了所有笔记。这个编辑按钮打开一个模式来编辑笔记。除了一个大问题外,这一切都很好。如果我有 5 个音符,当我单击第一个编辑按钮时,它会按预期编辑第一个音符......但是如果我单击第二个编辑按钮,它也会编辑第一个音符而不是第二个音符。第三个相同,等等。基本上无论我点击哪个编辑按钮,我总是在编辑第一个音符。

用户控制器

def show
   @user = User.find(params[:id])
   @notes = @user.notes.order('created_at DESC')
end 

索引页

<% @notes.each do |note| %>
  <td><%= note.body %></td>
  ........
  <td>
     <%= button_tag text, class: "btn btn-primary", data: {toggle: "modal", target: "#edit_note"} %>
     <%= render partial: "edit_note_modal", locals: { note: note } %>
  </td>
<% end %>

模态音符

<div class="modal fade" id="edit_note" tabindex="-1" role="dialog" aria-labelledby="edit_note" aria-hidden="true">
  <div class="modal-dialog">
    <div class="modal-content">
      <div class="modal-header">
        <h4 class="modal-title">Edit Note</h4>
      </div>
      <div class="modal-body">
        <%= form_for note do |f| %>
          <div class="form-group">
            <label for="keyword">Keyword</label>
            <%= select_tag :keyword, options_for_select(<SOME FUNCTION>, selected: note.keyword ), class:"form-control" %>
          </div>
          <div class="form-group">
            <label for="body">Body</label>
            <%= text_area_tag :body, note.body , class:'form-control' %>
          </div>
          <div class="modal-footer">
            <%= submit_tag "Update Note", class: "btn btn-primary" %>
          </div>
        <% end %>
      </div>
    </div>
  </div>
</div>

那是因为你用的是同一个ID,ID应该是uniq 所以当它在索引页中搜索ID时,一旦它找到第一个具有该ID edit_note的Note,它就会打开它,你是什么可以做的是为每个视图设置不同的 Id,如下所示:

索引页:

<%= button_tag text, class: "btn btn-primary", data: {toggle: "modal", target: "#edit_note_#{note.id}"} %>

注意模态:

<div class="modal fade" id="edit_note_#{note.id}" tabindex="-1" role="dialog" aria-labelledby="edit_note" aria-hidden="true">

注意现在的 id edit_note_#{note.id} 和编辑按钮尝试打开具有相同目标的模型 edit_note_#{note.id}