Rails:每个 link 的不同模态

Rails: Different modal for each link

我的观点是这样的结构:

<ul>
  <% @categories.each do |category| %>
    <li> <%= category.name %> <a href='#'>Edit</a> </li> 
  <% end %>
</ul>

现在,我想在单击 "Edit" 时弹出一个模式,并在此模式中放置一个用于编辑相应类别的表单。我想避免为循环中的每个元素生成模态,我想拥有一个通用模态并每次使用特定参数调用它。这可能吗?

只需创建一个远程 link:

link_to "edit", edit_category_path(category), class: "btn btn-mini", remote: true

然后在你的视图中,添加一个edit.js.erb文件:

$("#myModal").html("<%= j render "new"%>");
$('#myModal').modal('show');

并将您的 edit.html 和 new.html 文件更改为 _new.html 和 edit.html

js响应使用remote true

<ul>
  <% @categories.each do |category| %>
     <li> <%= category.name %><%= link_to 'Edit', edit_category_path(category), remote: true %> </li> 
  <% end %>
</ul>
<div class='modal-fade' id="edit-modal"></div>

创建一个部分页面_edit.html.erb 编写 bootstarp 模式结构并编辑表单并在表单中写入 remote: true

 eg. <%= form_for @category, remote: true do %>......<%end%>

创建edit.js文件并写入如下

$('#edit-modal').html("<%= j render 'edit' %>");
$('#edit-modal').modal('show');

并再创建一个文件 create.js

$('#edit-modal').modal('hide');