【问题标题】:Rails 3 how to force response type when request type is */*Rails 3如何在请求类型为*/*时强制响应类型
【发布时间】:2012-06-24 08:35:23
【问题描述】:

我有一个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 响应。但是似乎不起作用。什么是一种干净的方法来做到这一点,并且没有为每条路线设置默认类型? IE。我只想将响应类型插入请求中,以便respond_to 相应地打开它。

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】:

    • thx,但是这似乎具有改变params.format 的“神奇”副作用。在不深入研究源代码的情况下,我只是将其设置为 StringEnquirer 以便例如.html? 有效,但也适用于 .json? 等。
    猜你喜欢
    • 1970-01-01
    • 2017-09-30
    • 2015-04-21
    • 2020-10-01
    • 2020-09-19
    • 2012-02-24
    • 2022-10-17
    • 2018-11-29
    • 1970-01-01
    相关资源
    最近更新 更多