如何在具有本地人的页面上多次呈现相同的部分
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}
在我的应用程序中,我有一个笔记的概念...在页面上,我用一个编辑按钮列出了所有笔记。这个编辑按钮打开一个模式来编辑笔记。除了一个大问题外,这一切都很好。如果我有 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}