Как заставить мое приложение отвечать на формат, основанный на параметре строки запроса?

Например, я хотел бы

/ яблоки /123?_format= JSON

вести себя как

/apples/123.json

где он отображает шаблоны *.json.*, выполняет response_to {|format| format.json {...}} и т. д.

Это вообще возможно?

Спасибо!

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 в качестве формата по умолчанию.

Другие вопросы по тегам