我想通过具备该功能进一步提高Ransack tutorial 单击时显示产品的其他信息。
app/views/products/index.html.erb
...
<% @products.each do |product| %>
<tr>
<td><%= link_to(product.name, product) %></td>
<td><%= product.released_on.strftime("%B %e, %Y") %></td>
<td><%= number_to_currency(product.price) %></td>
</tr>
<% end %>
网络浏览器显示:
Product Name Release Date Price
Settlers of Catan June 20, 2014 $34.95
Red Shirt August 2, 2014 $12.49
...
可以选择产品名称下的每个项目 假设每个产品除了产品名称,发布日期和价格之外还有其他描述,我想通过更改来显示它们
<td><%= link_to(product.name, product) %></td>
到
<td><%= link_to(product.name, product_path(product)) %></td>
并在 show.html.erb
:
<p>
Manufacturer:
<%= @product.manufacturer %>
</p>
<p>
Description:
<%= @product.description %>
</p>
...
products_controller.rb
...
def show
@search = Product.search(params[:q])
@products = @search.result
end
...
这样做会产生错误。获得预期结果的正确方法是什么? 希望这个问题也有益于那些不熟悉ransack gem的人。
答案 0 :(得分:0)
你的节目动作是错误的。 #show动作应返回单个对象。这里不推荐使用Ransack。
<Sandfox_RemovePaypalExpressReviewStep before="Mage_Paypal">Sandfox_RemovePaypalExpressReviewStep</Sandfox_RemovePaypalExpressReviewStep>
或者如果你想使用ransack,那么
def show
@product = Product.find(params[:id])
end
答案 1 :(得分:0)
您的Products_controller应如下所示。
def index @search = Product.search(params [:q]) @products = @ search.result 端
def show @products = Product.find(params [:id]) 端