如何让我的应用程序响应基于查询字符串参数的格式?

时间:2013-08-07 20:55:10

标签: ruby-on-rails ruby-on-rails-3 activeresource actioncontroller

例如,我想

  

/ apples / 123?_format = json

表现得像

  

/apples/123.json

它呈现* .json。*模板,执行respond_to {| format | format.json {...}}等等。

这一切都可能吗?

谢谢!

1 个答案:

答案 0 :(得分:1)

您可以执行以下操作来禁用Rails自动处理.ext格式:

constraints format: false do
  resources :apples
  # ...
end

然后,这有点严重,但目前我没有看到更好的方法,您可以执行以下操作来更新ActionController的服务格式:

class ApplicationController < ActionController::Base
  before_filter :set_format_from_query_string

private

  def set_format_from_query_string
    request.format = params.fetch(:_format, 'json')
  end
end

这将允许您的respond_to块根据_format查询字符串参数进行切换,并使用json作为默认格式。