2010-02-26 3 views
1

Je voulais savoir s'il existe un moyen de changer le format d'affichage en fonction du nom de domaine la même application rails.Comment changer le format d'affichage basé sur le nom de domaine

Par exemple:

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

Merci à tous pour votre aide

+0

Vous pouvez certainement modifier la configuration apache pour cela. – vava

Répondre

5

Oui, utilisez un before_filter dans votre contrôleur et réglez le response.format en fonction de la valeur de request.host.

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

Génial! Merci beaucoup! – jjmartres

0

Voici une approche alternative à ce que je devine est votre problème. Pourquoi ne pas demander à vos clients de définir l'en-tête Accept sur application/xml ou application/json en fonction du format qu'ils souhaitent? Vous pouvez utiliser html par défaut pour prendre en charge les navigateurs Web.

De cette façon, vous n'avez pas besoin d'avoir deux hôtes différents.

+0

négociation de contenu ?! Es-tu fou, Darrell !? Je plaisante, je plaisante. ;) – Mike

+0

@Mike Je sais, il semble fou d'utiliser des fonctionnalités HTTP pour ce qu'ils étaient destinés. –

+0

Quels sont les avantages et les inconvénients de l'utilisation de différents hôtes? Je vois beaucoup de sites implémenter leur api sur un sous-domaine api: api.domain.com. Certains événements placent leur contenu statique sur static.domain.com. – berto77

Questions connexes