Rails 3如何在请求类型为* / *时强制响应类型

时间:2012-06-24 08:35:24

标签: ruby-on-rails-3 mime-types respond-to

我有before_filter想要根据请求和参数的各个方面默认响应类型。如,

request.format = ( params.format ||= 'html' ) if ...    # an HTML-only request/client
request.format = ( params.format ||= 'json' ) if request.xhr?

这个想法是respond_to do |format|; format.html { ... }; format.json { ... }然后根据客户条件适当地呈现。有些客户端是*/*类型(可能是request.content_type?),我想强制这些是HTML响应。但似乎没有工作。什么是干净的方法,并没有为每个路由设置默认类型?即我只是想将响应类型戳到请求中,以便respond_to相应地打开它。

1 个答案:

答案 0 :(得分:1)

request.format=应该是MIME::Type类型的对象。

所以你必须做request.format = MIME::Types.type_for('html').first

之类的事情