首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >当不支持Ruby on Rails的respond_to格式时,它能返回一行吗?

当不支持Ruby on Rails的respond_to格式时,它能返回一行吗?
EN

Stack Overflow用户
提问于 2010-08-28 03:17:03
回答 1查看 1.2K关注 0票数 3

respond_to的通常用法如下

代码语言:javascript
运行
复制
respond_to do |format|
  format.html
  format.xml { render :xml => @data }
end

当不支持该格式时(比如上面的json或csv不支持),是否可以返回一个文本行来说明“该格式不受支持”,或者更好的是,让它自动报告“只支持html和xml”?它只能知道现有的format.htmlformat.xml行只支持html和xml。(如果可能)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-08-28 06:59:13

您应该能够使用format.all

代码语言:javascript
运行
复制
respond_to do |format|
  format.html
  format.xml { render :xml => @data }
  format.all { render :text=>'the format is not supported' }
end

如果要列出支持的格式,则需要扩展响应器类。

将此代码放入类似于config/initializers/extend_responder.rb的内容中

代码语言:javascript
运行
复制
module ActionController
  module MimeResponds
    class Responder

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

    end
  end
end

然后在你的控制器中使用这个:

代码语言:javascript
运行
复制
respond_to do |format|
  format.html
  format.json { render :text=>'{}' }
  format.all { render :text=>"only #{(format.valid_formats - [:all]).to_sentence} are supported" }
end
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3587426

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档