作者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