Может ли Ruby on Rails response_to вернуть строку, когда формат не поддерживается? - PullRequest
3 голосов
/ 27 августа 2010

Обычное использование respond_to похоже на

respond_to do |format|
  format.html
  format.xml { render :xml => @data }
end

, может ли оно быть сделано так, чтобы, когда формат не поддерживается (например, json или csv не поддерживается выше), вместо того, чтобы ничего не возвращатьвернуть текстовую строку с надписью "формат не поддерживается" или, что еще лучше, автоматически сообщать "поддерживается только HTML и XML"?Он может знать, что только существующие html и xml поддерживаются существующими строками format.html и format.xml.(если возможно)

1 Ответ

6 голосов
/ 28 августа 2010

Вы должны быть в состоянии использовать format.all

respond_to do |format|
  format.html
  format.xml { render :xml => @data }
  format.all { render :text=>'the format is not supported' }
end

Если вы хотите перечислить поддерживаемые форматы, вам нужно расширить класс Responder .

Поместите это в нечто вроде config / initializers / exte_responder.rb

module ActionController
  module MimeResponds
    class Responder

      def valid_formats
        @order.map(&:to_sym)
      end

    end
  end
end

Затем используйте это в вашем контроллере:

respond_to do |format|
  format.html
  format.json { render :text=>'{}' }
  format.all { render :text=>"only #{(format.valid_formats - [:all]).to_sentence} are supported" }
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...