【发布时间】:2010-11-25 08:32:04
【问题描述】:
在 Rails 中路由资源时,可选的格式属性会自动附加到生成的路由中。这样可以将相关资源请求为 XML、HTML 等。实际允许的格式通常在控制器中使用respond_to 进行描述。
但在许多情况下,您只想支持 HTML,并且在每个控制器的每个操作中都写 respond_to :html 感觉像是一种开销。因此,如果在 routes.rb 文件中构建路由时已经有一种方法可以限制允许的内容类型,那就太酷了,例如
map.resources :users, :formats => :html
map.resources :users, :formats => [:html, :xml]
map.resources :users, :formats => {:index => :html, :show => [:html, :xml]}
有没有办法通过本机或插件来实现这一点?
附:解决此问题的常用方法是忽略该问题并且不要在操作中使用respond_to。但这实际上并不限制允许的内容类型。相反,它只期望在视图目录中存在每个可能的内容类型的模板。如果请求时不存在,系统将抛出 HTTP 500 错误。
【问题讨论】:
标签: ruby-on-rails rest routing content-type