2010-12-15 10 views
4

En utilisant Rails 3.0.3 en combinaison avec des gemmes comme des machines, je ne reçois aucun message flash. Maintenant, je mentionne l'invention, car elle contrôle les cookies utilisés pour m'authentifier.Rails 3 avis

Maintenant l'application Rails est un peu spéciale car elle utilise les sous-domaines . Qu'est-ce qu'ils font est de dire à l'application quelle compagnie un utilisateur navigue. Un exemple: mycompany.theapp.com/projects/3/ < - Projet 3 de la société "mycompany".
Lorsqu'un utilisateur se connecte, il est dirigé vers le site theapp.com/overview < - non sous-domaine
Tous les avis sont affichés, alors pourquoi pas sur les pages de sous-domaine?

Il s'agit donc du code utilisé sur les pages de sous-domaine. Exactement la même chose que l'on mettrait sur des pages non sous-domaine. Le code dans le contrôleur:

def update 
    redirect_to [@project], :notice => "Project #{@project.name} updated." 
end 

Les mises en page/application.html.erb

<% flash.each do |type, message| %> 
    <%= content_tag :div, message, :class => "flash #{type}" %> 
<% end %> 

J'ai également ajouté ce qui suit, en essayant de comprendre ce qui se passe:

flash.to_yaml 
# Result: --- !map:ActionDispatch::Flash::FlashHash {} 

Depuis apparemment utiliser flash [: avis] j'ai aussi essayé cela (parce que cela fonctionnait pour concevoir).

flash[:notice] = "Project #{@project.name} updated." 
# Result: --- !map:ActionDispatch::Flash::FlashHash {} 

Maintenant, faites les avis s'envoyer par les cookies ou les données de session qui ne sont pas transférés bien aux sous-domaines? Parce que le formulaire de modification du projet est sur mycompany.theapp.com/projects/3/edit/
Et il me envoie à mycompany.theapp.com/projects/3/ (sans préavis)

Il arrive sur Ubuntu 10.10 avec "rails server", passager utilisant nginx et même sur une machine Mac (mais quelqu'un d'autre testé).

Quelqu'un veut-il deviner?

+0

Etes-vous sûr que lorsqu'un utilisateur transfère à un sous-domaine, ils sont toujours connectés dans?Ce comportement n'est pas le comportement par défaut (vous devez autoriser explicitement les cookies à traverser les sous-domaines). Peut-être que les utilisateurs ne sont pas connectés et reçoivent des vues sans flashes dans la mise en page? –

Répondre

6

Apparemment, il n'y avait pas vraiment de problème avec la configuration. Nous l'avons déployé sur un serveur très rapide, en mode production, et cela a fonctionné, à notre grande surprise. Les avis apparaissaient dans tous les domaines.
C'est quelque chose avec les domaines localhost, j'utilisais lvh.me, que Rails ne comprend pas vraiment.

L'indice était dans un (récent) commentaire sur Railscast:

http://railscasts.com/episodes/221-subdomains-in-rails-3?view=comments#comment_146276 Il y a une chose importante à savoir si vous souhaitez partager des sessions entre sur les sous-domaines localhost. Utilisation: domaine => ".lvh.me" ne fonctionne pas toujours (dans mon cas, il n'a pas), donc vous devez configurer votre environnement comme décrit dans blog.plataformatec.com.br/2009/12/ -et-sous-domaines sessions à la rescousse/

Sulc @ David, les utilisateurs étaient connectés.

+0

+1. Merci d'avoir lié le commentaire. Exactement ce que je cherchais. – Shreyas

+0

J'ai eu un problème similaire mais c'était un problème de css, je n'ai pas eu le message flash, l'erreur flash et le code css d'erreurs de forme. mais il y a un an je pense –