2009-06-16 4 views
0

Je développe une application rails et j'ai une question.rails redirect_to problème

Dans mon routes.rb:

map.connect 'admin', :controller => "/admin/users", :action => "index"

Alors quand je vais à "http://mydomain.com/admin", il redirige vers "http://mydomain.com/admin/users/index". Cependant, l'adresse reste "http://mydomain.com/admin". Ainsi, les liens de la page sont erronés car ils sont créés en fonction de "http://mydomain.com/admin".

Quelle est la solution à ce problème?

Sam

Répondre

0

Votre code ne redirige le navigateur, il est tout simplement la mise en place/admin et/admin/utilisateurs de déclencher la même action.

Vous pouvez essayer:

map.connect 'admin', :controller => "/admin/users", :action => "redirect_to_index" 

Ensuite, dans votre écriture du contrôleur:

def redirect_to_index 
    redirect_to :action => :index 
end 

Cela envoie une redirection vers le navigateur, l'amenant à afficher l'URL correcte.

Heureusement, il existe une meilleure méthode qui ne concerne que les routes.rb. Ce site pourrait être utile ->redirect-routing-plugin-for-rails

1

essayez ceci:

map.connect 'admin /: action /: id',: controller => 'admin/utilisateurs'

0

Assurez-vous que tous les liens du même domaine sur la page commence par un /, et utilise le chemin complet. En règle générale, vous devez utiliser les méthodes de routage Rails pour générer vos liens lorsque cela est possible. Il en va de même pour l'utilisation des aides image_tag et stylesheet_link_tag. Par conséquent, si vous avez un lien vers "privacy.html", remplacez-le par "/privacy.html" et vous devriez être tout bon, peu importe où vous êtes dans la structure de la route. C'est très agréable quand vous commencez à extraire votre code de vue pour les partiels réutilisables.