作者Esh ()
看板Ruby
標題[問題] 修改show的params[:id]
時間Mon May 4 14:37:56 2009
又有問題要問一下高手,關於controller內的method
小弟我用scaffold產生一個對應資料庫的簡單List頁面後
想要改controller裡面的def show
讓.find(params[:id])變成其他欄位
又拿圖書資料庫舉例..(library_controller.rb)
一個圖書資料庫schema主要有TITLE, ISBN兩個欄位好了
能否改掉預設以id這個AUTO_INCRE的欄位作為參照的方式
以ISBN或TITLE作為find的內容?
我把 def show中
@library= Libray.find(params[:id]) 這個預設的
params[:id]改成(params[:isbn])
想要讓使用REST時
localhost:3000/library/show/{id} 這個method
可以變成直接以isbn查詢 .../show/{isbn}
結果失敗了
不知道我這方法可不可行? 或者還需要改那些地方才能辦到?
謝謝
--該不會只能用id這個pm_key作為show的參數吧?
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.129.77.5
1F:→ shelary:你搞錯那個id的意義了..那不是資料庫裡的id欄位 05/04 14:53
2F:→ shelary:你也搞錯了 find 的用法了.. 05/04 14:53
3F:→ godfat:merb 的 router 可以,rails 就我目前所知是不行 05/04 15:16
4F:→ godfat:寫到現在我開始覺得 route 都應該用手刻才有彈性... 05/04 15:16
5F:→ godfat:至於 AR 的部份,set_primary_key, 不過不確定是不是你要的 05/04 15:18
6F:推 deduce:set_primary_key 可以 05/04 15:29
7F:→ deduce: set_primary_key :isbn 05/04 15:29
8F:推 dlackty:@library= Libray.find_by_isbn(params[:id]) 05/04 17:06