[問題] 修改show的params[:id]

看板Ruby作者時間16年前 (2009/05/04 14:37), 編輯推噓2(206)
留言8則, 4人參與, 最新討論串1/1
又有問題要問一下高手,關於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

05/04 14:53, , 1F
你搞錯那個id的意義了..那不是資料庫裡的id欄位
05/04 14:53, 1F

05/04 14:53, , 2F
你也搞錯了 find 的用法了..
05/04 14:53, 2F

05/04 15:16, , 3F
merb 的 router 可以,rails 就我目前所知是不行
05/04 15:16, 3F

05/04 15:16, , 4F
寫到現在我開始覺得 route 都應該用手刻才有彈性...
05/04 15:16, 4F

05/04 15:18, , 5F
至於 AR 的部份,set_primary_key, 不過不確定是不是你要的
05/04 15:18, 5F

05/04 15:29, , 6F
set_primary_key 可以
05/04 15:29, 6F

05/04 15:29, , 7F
set_primary_key :isbn
05/04 15:29, 7F

05/04 17:06, , 8F
@library= Libray.find_by_isbn(params[:id])
05/04 17:06, 8F
文章代碼(AID): #19_er7j5 (Ruby)
文章代碼(AID): #19_er7j5 (Ruby)