我还是Rails的新手,似乎无法绕过这个。
我在表格列中显示了几个具有多个属性的产品。在我的索引视图中,我正在显示一个缩短的表,只有一些列。在我的产品#show中我讲的是完整的故事,但显然只针对所选产品。我想要做的是让用户在产品#index中选择多个产品,然后将选定的ID存储在一个哈希中,将它们发送到另一个视图,我希望这些ID能够在一个完整的表格中显示,告诉我们整个故事,几个产品同时出现。基本上这是用于比较产品。
我不确定如何解决这个问题。由于我已经在使用DataTables,使用javascript会有意义,但我不确定如何。和想法?我尝试了几个想法,但没有一个让我到处都是。
产品#索引
<table id="products"cellpadding="0" cellspacing="0" border="0" class="table.responsive">
<thead>
<tr>
<th></th>
<th>Product Name</th>
<th>TG</th>
<th>TD</th>
<th>DK</th>
<th>DF</th>
<th>T260</th>
<th>T288</th>
<th>CTI</th>
<th>Strength</th>
<th>Rigidity</th>
<th>Standards</th>
<th>Manufactorer</th>
</tr>
</thead>
<tbody>
<% @products.each do |product| %>
<tr>
<td><%= check_box_tag "product_ids[]", product.id %></td>
<td><%= link_to product.name, product %></td>
<td><%= product.TG %></td>
<td><%= product.TD %></td>
<td><%= product.DK %></td>
<td><%= product.DF %></td>
<td><%= product.T260 %></td>
<td><%= product.T288 %></td>
<td><%= product.CTI %></td>
<td><%= product.ElectricStrength %></td>
<td><%= product.rigidity %></td>
<td><% product.standards.each do |standard| %>
<%= link_to standard.name, standard %>,
<% end %> </td>
<td><%= product.producer %></td>
<% end %>
</tr>
</tbody>
</table>
如果有人能花些时间指出我正确的方向,那就太好了!
答案 0 :(得分:1)
这不应该太难解决,我将引导您完成我将采取的基本步骤。
我的基本方法是采用所述复选框的形式并将其提交给旨在以所述方式处理它们的动作,如下所示:
创建一个新路径以用于所有这些。在the docs中查看 2.10.2添加集合路由(假设您正在使用资源)。也许称之为“比较”。
使用form not backed by a model按住checkboxes和labels(每个产品各占1个) - 它应该发布到您的新路线。
在您的控制器中,添加路线的操作。此操作应该从params获取表单传入的id并加载相关产品(请记住find可以使用一系列ID,因此它应该非常简单)。
最后,为新动作添加一个视图,并使用相关逻辑来显示您的比较。
您可以使用javascript轻松进行回填,但这不是必需的。老实说,添加一些额外的功能会更有用,例如禁用按钮并显示微调器或其他东西,而不是完整的javascript提交,在这种特殊情况下并没有真正为你买任何东西。