我的rails 4应用程序控制器中有一个索引方法,如下所示:
def index
@products = Product.all
@headers = @products.map(&:data).flat_map(&:keys).uniq
@product_data = @products.map{ |product| product[ :data ].values }
end
所以@product_data的结果如下:
[["Table", "$199.99", "blue"], ["Book", "$9.99", "green"]]
在我看来,我把所有这些放在一个无序列表中。但现在我想为每个产品添加一个link_to编辑和删除页面。如何将其包含在我的数组中,以便在视图页面上显示每个产品的链接?
答案 0 :(得分:1)
您可以将product_id
添加到product[:data].values
数组的结果中。然后使用product_id
作为product
url_helpers
的参数。
@product_data = products.map{ |product| product[ :data ].values.unshift(product.id) }
这应该给你类似的东西:
[[1, "Table", "$199.99", "blue"], [2, "Book", "$9.99", "green"]]
答案 1 :(得分:1)
我发现那里没有使用@product_data
。为什么你不能在index.html.erb
的表格中显示数据,你可以遍历每个产品,以便修改和删除链接。假设您的产品型号具有name
,price
和color
属性,只需执行像这样
在index.html.erb中:
<table border=1>
<tr>
<th>Product Name</th>
<th>Product Price</th>
<th>Product Color</th>
<th></th>
<th></th>
</tr>
<% @products.each do |p| %>
<tr>
<td><%=p.name %></td>
<td><%=p.price %></td>
<td><%=p.color %></td>
<td><%=link_to 'Edit', :action => "edit", :id => p.id %></td>
<td><%=link_to 'Delete', :action => "delete", :id => p.id, :confirm => "Are you sure?" %></td>
</tr>
<% end %>
</table>
注意:强> 它只是另一种方法。