开发者

Can Ruby on Rails's respond_to return a line when the format is not supported?

开发者 https://www.devze.com 2023-01-13 23:46 出处:网络
A usual usage of respond_to is like respond_to do |format| format.html format.xml { render :xml => @data }

A usual usage of respond_to is like

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

can it be made so that when开发者_如何学C the format is not supported (such as json or csv not being supported above), instead of returning nothing, return a text line saying "the format is not supported", or better yet, have it automatically report "only html and xml is supported"? It can know only html and xml are supported by the existing format.html and format.xml lines there. (if possible)


You should be able to use format.all

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

If you want to list the supported formats you'll need to extend the Responder class.

Put this in something like config/initializers/extend_responder.rb

module ActionController
  module MimeResponds
    class Responder

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

    end
  end
end

Then use this in your controller:

respond_to do |format|
  format.html
  format.json { render :text=>'{}' }
  format.all { render :text=>"only #{(format.valid_formats - [:all]).to_sentence} are supported" }
end
0

精彩评论

暂无评论...
验证码 换一张
取 消