1

我还是 Rails 的新手,似乎无法解决这个问题。

我在表格列中显示了几个具有多个属性的产品的表格。在我的索引视图中,我展示了一个缩短的表格,其中只有一些列。在我的 products#show 中,我讲述了完整的故事,但显然只针对选定的产品。我想要做的是让用户在 products#index 中选择一些产品,然后将选定的 ID 存储在哈希中,将它们发送到另一个视图,我希望将 ID 显示在一个完整的表中,告诉整个故事,一次几个产品。基本上这是为了比较产品。

我不知道如何解决这个问题。因为我已经在使用 DataTables,所以使用 javascript 是有意义的,但我不确定如何使用。和想法?我尝试了几个想法,但没有一个能让我有所收获。

产品#index

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

如果有人能抽出时间为我指明正确的方向,那就太好了!

4

1 回答 1

1

这不应该太难解决,我将引导您完成我将采取的基本步骤。

我的基本方法是采用上述复选框的形式并将其提交给旨在以所述方式处理它们的操作,如下所示:

  • 创建一条用于所有这些的新路线。查看文档中的2.10.2 添加收集路由(假设您正在使用资源)。也许称它为“比较”之类的东西。

  • 使用不受模型支持的表格来保存您的复选框标签(每个产品各有一个) - 它应该发布到您的新路线。

  • 在您的控制器中,为您的路线添加操作。此操作应从参数中获取表单传入的 id 并加载相关产品(请记住,find可以采用 id 数组,因此应该很容易)。

  • 最后,为您的新操作添加一个视图,并使用相关逻辑来呈现您的比较。

您可以轻松地使用 javascript 进行回填,但这不是必需的。老实说,添加一点额外的华丽效果会更有用,比如禁用按钮并显示微调器或其他东西,而不是完整的 javascript 提交,在这种特殊情况下,它并不能真正为你买任何东西。

于 2013-08-15T07:10:50.167 回答