最近写 rails,不由自主的会用以前 java 的思维,下面的代码就开始嘀咕了
<% @products.each do |product| %>
<% cache ['entry', product] do %>
<div class="entry">
<a>
<%= link_to(image_tag(product.image_url),{:controller =>'line_items',:action => 'create',product_id: product }, :method => :post )%>
</a>
<h3><%= product.title %></h3>
<%= sanitize(product.description) %>
<div class="price_line">
<span class="price"><%= number_to_currency(product.price) %></span>
<!-- START_HIGHLIGHT -->
<%= button_to 'Add to Cart', line_items_path(product_id: product) %>
最后一行,是想把 product_id 的值传到后台,后台的 line_items_path 片段如下
def create
product = Product.find(params[:product_id])
@line_item = @cart.add_product(product.id)
使用 product_id 查询 product,没有问题。
但是,为什么是 line_items_path(product_id: product) ,我觉得应该是 line_items_path(product_id: product.id) 才合理啊?是哪个文件进行了配置?还是 ruby 本身就是直接对象实例替代具体字段?