Can Ruby on Rails's respond_to return a line when the format is not supported?
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
精彩评论