【问题标题】:Can Ruby on Rails's respond_to return a line when the format is not supported?当格式不受支持时,Ruby on Rails respond_to 可以返回一行吗?
【发布时间】:2010-08-27 19:17:02
【问题描述】:

respond_to 的常用用法是这样的

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

是否可以这样在不支持格式时(例如上面不支持json或csv),而不是什么都不返回,而是返回一个文本行说“格式不支持”,或者更好的是,有它会自动报告“仅支持 html 和 xml”?它可以知道那里现有的format.htmlformat.xml 行只支持html 和xml。 (如果可能)

【问题讨论】:

标签: ruby-on-rails


【解决方案1】:

你应该可以使用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

【讨论】:

    猜你喜欢
    • 2020-07-08
    • 2011-04-28
    • 1970-01-01
    • 2014-10-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-24
    • 1970-01-01
    相关资源
    最近更新 更多