2010-08-27 51 views
3

respond_to的通常用法是像當格式不被支持時,Ruby on Rails的respond_to可以返回一行嗎?

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

可以將它製成,使得當不支持的格式(例如,沒有被上述支承JSON或CSV),而不是沒有返回,返回一個文本行說「格式不被支持」,或者更好的辦法是讓它自動報告「只支持html和xml」?它可以知道現有的format.htmlformat.xml行僅支持html和xml。 (如果可能)

+0

[Rails的respond_to代碼返回未知格式錯誤](https://cbabhusal.wordpress.com/2014/10/07/rails-respond_to-return-unknown-format-error/) – illusionist 2016-05-12 03:13:56

回答

6

您應該能夠使用format.all

respond_to do |format| 
    format.html 
    format.xml { render :xml => @data } 
    format.all { render :text=>'the format is not supported' } 
end 

如果要列出你需要延長響應類所支持的格式。

將這個在類似配置/初始化/ 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 
相關問題