2010-07-19 6 views
2

Je suis en train de mettre en place des itinéraires nommés pour la page:Ruby on Rails routes nommées par le chemin absolu de la racine de l'application

  • www.myhost.com/blog/about

    (map.about '/about', :controller => 'page', :action => 'about')

J'ai une autre route pour une ressource:

  • www.myhost.com/blog/post/3

    (map.resources :posts)

Maintenant, je ne sais pas comment devrais-je créer un lien vers page "about". Si j'utilise

  • a) <%= link_to 'About', about_url %> ou
  • b) <%= link_to 'About', 'about' %>

Il fonctionne très bien que quand je vais à blog/posts et blog/about. Lorsque j'ouvre blog/post/1, le lien vers la page obtient une adresse blog/post/about.

Comment puis-je le forcer à créer un chemin absolu à partir de la racine de l'application?

+0

Avez-vous essayé 'about_path'? – theIV

+0

L'option (b) est incorrecte, mais êtes-vous sûr d'avoir le même comportement lorsque vous utilisez (a)? Si c'est le cas, collez la source html générée par link_to about_url. – mckeed

Répondre

2

La sortie HTML pour (a) et (b) devrait être comme ceci. Le problème se produira uniquement en utilisant la méthode (b).

a)

<a href="http://127.0.0.1:3000/about">About</a> 

b)

<a href="about">About</a> 

si vous avez besoin le chemin absolu de la racine de l'application, vous pouvez passer about_path comme second argument à l'aide link_to. (<%= link_to 'About', about_path %>). Cela produira vos liens comme indiqué ci-dessous.

<a href="/about">About</a> 
+0

Je pensais avoir essayé avec about_url, mais maintenant je l'ai testé pour la deuxième fois - ça marche! – Karl