2009-10-01 9 views
0

Je voudrais répondre à différents formats dans mon application Rails:Facebook Les requêtes FBML n'envoient pas de type mime?

respond_to do |format| 
    logger.info "in main format block, request.format.fbml? = #{request.format.fbml?}" 
    format.html # index.html.erb 
    format.fbml # index.fbml.erb 
end 

est simple. Si facebook demande une page, renvoyez un fichier .fbml.erb, sinon renvoyez un fichier .html.erb.

Mon application sait envoyer le fichier main.fbml.erb à partir du répertoire layouts au lieu de main.html.erb mais il n'envoie jamais app/views/main/index.fbml.erb dans le bloc respond to si je réponds comme montré ci-dessus dans l'action d'index de mon contrôleur principal.

Quelqu'un sait comment faire facilement cela? J'utilise la gemme "facebooker" qui définit automatiquement le format en fbml.

EDIT sortie de mes rails journal:

in main format block, request.format.fbml? = true 
Rendering template within layouts/main 
Rendering main/index 

Répondre

2

Facebooker devrait le faire automatiquement. It adds un set_facebook_request_format avant le filtre à vos contrôleurs. Si vous préférez ne pas ajouter l'ensemble de facebooker à votre application, il semble relativement facile d'extraire la fonctionnalité.

+0

Ah bon à savoir que c'est fait automatiquement. Cependant, j'utilise facebooker et le problème persiste. Il rend la disposition très bien mais ne restitue rien dans le bloc respond_to. Savez-vous pourquoi cela pourrait se produire? – Tony

0

Selon la version de Facebooker que vous utilisez, il peut être nécessaire d'ajouter explicitement la ligne suivante à votre /config/initializers/mime_types.rb

Mime::Type.register_alias "text/html", :fbml 
+0

Cela n'a pas semblé aider – Tony

0

Je viens de rencontrer dans ce après une longue temps loin de traiter avec Facebooker et écrire des applications Facebook. Il s'avère que, dans les paramètres Facebook de ma nouvelle application, la méthode de rendu a été définie sur IFrame au lieu de FBML. Il est logique que facebooker n'envoie pas fbml à un iframe car un navigateur ne sait pas comment rendre et les balises fbml.

Questions connexes