我想限制我的路由文件中的路徑爲特定的格式。Rails 3路由和格式特定性
我想這個工作: app.com/party_favors/list.json
不是這個
app.com/party_favors/list
或本 app.com/party_favors/list.html
或本 app.com/party_favors/list.asdasdasda
有一個簡單的辦法只允許在比賽進入一定的格式在路線文件?
謝謝!
我想限制我的路由文件中的路徑爲特定的格式。Rails 3路由和格式特定性
我想這個工作: app.com/party_favors/list.json
不是這個
app.com/party_favors/list
或本 app.com/party_favors/list.html
或本 app.com/party_favors/list.asdasdasda
有一個簡單的辦法只允許在比賽進入一定的格式在路線文件?
謝謝!
據我知道你可以在控制器處理這個,而不是路由
respond_to do |format|
format.html
format.json { render :json => @abcd }
format.any { render :text => "Invalid format", :status => 403 }
end
你可以明確地映射像這樣
match 'party_favors/list.json', :controller => 'party_favors', :action => 'list', :format => 'json'
我結束了這個解決方案會爲我的2個公共暴露的方法。 before filter option,因爲它發出404s。我真的希望有一個更乾淨的方式來做到這一點。
謝謝大家的回答。我很感激。 :)
我發現下面的工作對我來說(滑軌3.1.1)
match '/categories/:id.json'=>'categories#show', :format=>false, :defaults=>{:format=>'json'}
的Rails 3還提供了可以在路線上指定的:constraints
option。這個工作路由在同一網址到不同的控制器,這取決於格式:
# http://app.com/party_favors.html gets routed to Web::PartyFavorsController#index
resources :party_favors, :module => "web", :constraints => {:format => :html}
# http://app.com/party_favors.xml gets routed to PartyFavorsController#index
resources :party_favors
我嘗試用Rails 2 :requirements
選擇,但它似乎不那麼靈活。我不知道有什麼方法將它構建到Rails 2的路由中,因此您必須使用其他建議之一。
這不會限制對這些格式的請求,請參閱下面的答案以獲得正確的實現 – koonse 2013-02-06 07:36:49
如果您想將它們限制爲特定的格式(例如html或json),您必須將這些路由包含在範圍中。不幸的是,這種情況下的約束條件並不像預期的那樣工作。
這是這樣一個塊的例子...
scope :format => true, :constraints => { :format => 'json' } do
get '/bar' => "bar#index_with_json"
end
更多信息可以在這裏找到:https://github.com/rails/rails/issues/5548
這個答案是我以前在這裏的答案抄..
Rails Routes - Limiting the available formats for a resource
多數民衆贊成多麼我認爲我應該能夠做,但耙路線在生成的路線末尾推((:格式):/ – skk5m 2010-11-17 12:21:31
我認爲你將不得不定義所有的路徑,並更少地依賴生成器 – 2011-05-16 09:35:11