Rails ruby 对象实例可以直接替代属性字段吗?

ane · 2013年10月08日 · 最后由 u1378130755 回复于 2013年10月08日 · 2082 次阅读

最近写 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 本身就是直接对象实例替代具体字段?

  1. 写成 line_items_path(product_id: product.id) 当然是没有问题的;
  2. 把对象“在需要的时候”转化成它的 id,这个是 rails 帮我们做了的事情,不是 ruby 的特性;
  3. 作为基♂友 我是看了楼主的头像才回帖的

#1 楼 @hegwin 哈哈,tks,不过我是直男

需要 登录 后方可回复, 如果你还没有账号请 注册新账号