我想顯示一個比較頁面,以便用戶可以比較我的數據庫中的幾個對象的屬性。任何數量的對象都可以進行比較。我也希望它是可收藏的(所以'get')。如何在Rails中將靈活數目的ID傳遞給控制器?
我該如何構建控制器的URL /路由?
類似於/ foo_compare/1_5_22我將控制器中的ID分成1,5和22?
也許/ foo_compare/1/5/22,但我將如何設置路線?
我想顯示一個比較頁面,以便用戶可以比較我的數據庫中的幾個對象的屬性。任何數量的對象都可以進行比較。我也希望它是可收藏的(所以'get')。如何在Rails中將靈活數目的ID傳遞給控制器?
我該如何構建控制器的URL /路由?
類似於/ foo_compare/1_5_22我將控制器中的ID分成1,5和22?
也許/ foo_compare/1/5/22,但我將如何設置路線?
我寧願
/compare?a=1&b=5&c=22
的1_5_22僅僅是fugly,我認爲
/compare/1/5/22
是一個非常不REST風格的路線。
我同意。這意味着22嵌套在5內部,嵌套在1內。相反,這些ID都是對等的。 – 2009-01-12 16:53:43
a) url_for(:controller => "my_controlelr",:action => "compare", :id => [1,2,3,4]) becomes "id"=>"1/2/3/4"
鏈路將my_controlelr /比較/ 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 /比較/?IDS [] = 1個& IDS [] = 2個& IDS [ ] = 3個& IDS [] = 4個
沒有特定的路由是必要的
選項(b)似乎最乾淨 – 2009-01-14 19:03:03
# routes.rb
map.connect 'compare/*:comparisons', :controller => 'whatever', :action => 'you_name_it'
# in the controller
ids = params[:comparisons].split('/')
這映射到例如/比較/ 1/5/203中。
雖然我不喜歡下劃線,但我認爲劃定的方法是合理的。我可能會用';'
從邏輯上講,這是一個集ID,把它們作爲一個系列的參數不是很大,除非你真的要強制對他們的數量限制
做一個好公民stackoverflow.com和一個標籤回答! – 2009-01-20 10:26:01