2017-06-21 7 views
0

Juste mis à jour une application Rails 3.2 à Rails 4.2 et a commencé à obtenir une erreur amusante. Chaque fois que j'essaie d'appeler link_to avec un seul argument dans mon modèle de mailer, j'obtiens une erreur. Cependant, je peux faire le même appel juste bien dans une de mes vues régulières.link_to avec un seul argument cassé dans mailer

A l'intérieur de mon point de vue mailer, j'essaie de l'appeler comme ceci:

# user_mailer/notify.html.haml 
... 
= link_to "https://example.com" 

Mais quand le courriel obtient traité par mon gestionnaire d'emplois, il signale l'erreur ActionView::Template::Error: No route matches {:action=>"index"}. (Fait intéressant, c'est ce que vous obtenez lorsque vous essayez d'appeler url_for sans aucun paramètre).

Cependant, sur ma page d'accueil Je ne problème en utilisant la même chose:

# home/index.html.haml 
... 
= link_to "https://example.com" 

Sorties:

<a href="https://example.com">https://example.com</a> 

Pour autant que je peux dire regarder les docs, rien n'a changé avec link_to entre Rails 3.2 et 4.2 donc je suis confus pourquoi cela arrêterait de fonctionner ... Aussi confus pourquoi cela fonctionne dans un endroit, mais pas l'autre.

Répondre

1

link_to avec un seul paramètre ne fait pas ce que vous pensez qu'il fait. Si vous regardez le lien généré dans votre vue, il pointe simplement vers le site sur lequel vous êtes actuellement. Vous devez fournir deux paramètres, le corps et l'url.

= link_to "https://example.com" 
# <a href="/">https://example.com</a> 

Vous aurez besoin cependant

= link_to "https://example.com", "https://example.com" 
+1

Cela fait beaucoup de sens ... Je aurait pu jurer qu'il était différent. Merci pour ton aide! – ngoue