Ruby on Rails的respond_to可以在不支持格式时返回一行吗?
respond_to
的通常用法就像
respond_to do |format| format.html format.xml { render :xml => @data } end
可以这样做,以便当不支持该格式时(例如上面不支持json或csv),而不是返回任何内容,返回一条文字行,说“不支持格式”,或者更好的是,让它自动报告“只支持html和xml”? 它可以知道现有的format.html
和format.xml
行只支持html和xml。 (如果可能的话)
你应该能够使用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 / extend_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