我想限制我的路由文件中的路径为特定的格式。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