我想显示一个比较页面,以便用户可以比较我数据库中多个对象的属性。可以比较任意数量的对象。我也喜欢它是可收藏的(所以'得到')。
我应该如何构建控制器的URL /路由?
像/ foo_compare / 1_5_22那样我把ID分成控制器中的1,5和22?
也许/ foo_compare / 1/5/22,但我如何设置路线?
答案 0 :(得分:5)
我更喜欢
/compare?a=1&b=5&c=22
1_5_22只是很难看,我认为
/compare/1/5/22
是一条非RESTful路线。
答案 1 :(得分:4)
a) url_for(:controller => "my_controlelr",:action => "compare", :id => [1,2,3,4]) becomes "id"=>"1/2/3/4"
链接是my_controlelr / compare / 1/2/3/4
b) url_for(:controller => "my_controlelr",:action => "compare", :ids => [1,2,3,4]) becomes "ids" => ["1", "2", "3", "4"]
链接是my_controlelr / compare /?ids [] = 1& ids [] = 2& ids [] = 3& ids [] = 4
无需特殊路线
答案 2 :(得分:4)
# routes.rb
map.connect 'compare/*:comparisons', :controller => 'whatever', :action => 'you_name_it'
# in the controller
ids = params[:comparisons].split('/')
这映射到例如/比较/ 1/5/203
答案 3 :(得分:1)
虽然我不喜欢下划线,但我认为划定方法是合理的。我可能会用';'
从逻辑上讲,这是一组ID,将它们作为一系列参数公开并不是很好,除非你真的想强制限制它们的数量