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



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

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

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

最新更新