More link_to

by winson, about 1 year ago.

在Rails的rhtml中,link_to的作用是把資料庫的某一筆資料丟給別的action去處理。

例如: 網路書店的書籍清單畫面,可能是一個book_list action搭配view所展示的,裡面可能會有一個add_to_cart的購物車action,利用link_to可以把某一本書丟進購物車。

所以
<% for book in @books %> 
  <%= book.title %> 
  <%= book.description %> 
  <%= book.price %> 
  <%= link_to "Add to cart", :action => "add_to_cart", :id => book %> 
<% end %>
會在Book Price底下產生一個連結,點下去可以將這本書丟給add_to_cart。

我覺得很奇怪,為什麼:id指向book,而不是book.id??

去看html的原始碼可以發現link_to會產生一個類似Add to cart的超連結,那個5明明就是Book ID。

實驗一下把:id=>book改成:id=>book.id會發現是可以work的(本來就要可以work)。但如果也實驗一下印出<%= debug(book) %>內容,會發現那是一個類似的Object ID。

結論就是說:id=>book原本要填入的是:id=>book.id,但是因為太常用到了,於是簡化為:id=>book,而ROR內部會自動將傳入的Object ID轉成Record ID。


  • Posted in Sugar, on Friday, March 30, 2007, at 01:09 AM.