在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) %>內容,會發現那是一個類似
結論就是說:id=>book原本要填入的是:id=>book.id,但是因為太常用到了,於是簡化為:id=>book,而ROR內部會自動將傳入的Object ID轉成Record ID。
