REST風格的目的,我做我的路由就像這樣:我應該如何使這個路由RESTful?
的routes.rb
match 'shops/:sort/:genre/:area', :to => 'shops#index'
但如果流派是空的呢? 是不是會重定向到example.com/shops/newest_first//california
?
我該如何解決這種路由和參數問題? 任何人都可以給我看一個很好的例子嗎?
視圖
<%= form_tag shops_path, :method => :get do %>
<%= select_tag :sort, options_from_collection_for_select(Sort.all, 'id', 'name', params[:sort]), :prompt => "Newest first" %>
<%= select_tag :genre, options_from_collection_for_select(Genre.all, 'id', 'name', params[:genre]), :prompt => "all" %>
<%= select_tag :area, options_from_collection_for_select(Area.all, 'id', 'name', params[:area]), :prompt => "all" %>
<% end %>
別論
你的路線是**不** ** REST-ful。我想你誤解了這意味着什麼。此外,提交您的表單不會生成一個匹配您的路線的網址** ever **。相反,如果您的選擇列表包含空白選項,它將指向'/ shops?sort = ...&genre = ...&area = ...',並且是'...'可能對任何一個都是空白的。如果你正在做'GET'表單提交,它總是會產生一個查詢字符串,這部分是因爲你提出的問題,你想用你的路線做什麼不是最好的主意。 – deefour
我會說只是驗證你的表單,該參數永遠不會丟失。或者設置一個缺省值。你可以用這種方式來構建它,但是我同意來自「Erez Rabih」的答案,因爲參數是更常見的方式 –
謝謝你們。你認爲Erez的答案是什麼?你們會做同樣的事嗎? – Foo