1

我有一个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相应地打开它。

4

1 回答 1

1

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

所以你必须做类似的事情request.format = MIME::Types.type_for('html').first

于 2012-07-03T22:27:49.590 回答