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