2010-02-26 30 views
1

我想知道是否有任何方法來改變基於域名的視圖格式相同的應用程序。如何更改基於域名的視圖格式

例如:

  • www.domain.com =>的respond_to format.html
  • api.domain.com =>的respond_to format.xml或format.json

由於所有爲您的幫助

+0

你當然可以調整Apache配置來做到這一點。 – vava 2010-02-26 15:58:21

回答

5

是的,在您的控制器中使用before_filter並根據request.host的值設置response.format

class Controller < ActionController::Base 

    before_filter :adapt_response_format 

    protected 

    def adapt_response_format 
     response.format = case request.host 
     when "xml.foo.com" then :xml 
     else     :html 
    end 

end 
+0

太棒了! 非常感謝! – jjmartres 2010-02-27 09:56:55

0

這是我猜測是你的問題的替代方法。

爲什麼不問你的客戶設置Accept頭爲application/xml或application/JSON取決於他們想要什麼格式?您可以默認提供html以支持Web瀏覽器。

這樣你就不需要有兩個不同的主機。

+0

內容協商?你瘋了嗎,達雷爾!?我開玩笑,我開玩笑。 ;) – Mike 2010-03-01 10:55:37

+0

@Mike我知道,使用HTTP功能看起來很瘋狂。 – 2010-03-01 14:32:27

+0

使用不同主機有什麼優點和缺點?我看到很多網站在api子域上實現他們的api:api.domain.com。某些事件將其靜態內容放置在static.domain.com上。 – berto77 2012-02-03 17:12:17