2012-06-19 11 views
5

Gdy jeden z pożarów ulotek off jeśli ciało zawiera coś link_to root_url daje to niezwykle unhelpful błąd:dziedziczone app z dziwnym błędem routingu, nie mecze trasa {}

ActionView::Template::Error: No route matches {} 

śladu albo jest bezużyteczne lub punkty do tej metody link_to. Ponieważ jest to również bardzo niezbadane, proszę o przepełnienie stosu.

UPDATE 1: Aby pomóc, ja pisał przerażającą routes.rb plik: https://gist.github.com/2955610

UPDATE 2: W konsoli app.root_url zapewnia prawidłowy powrót.

UPDATE 3:link_to "whatever", root_url działa dobrze. Bardzo dziwne!

AKTUALIZACJA 4: Działa poprawnie w widoku regularnych szyn.

UPDATE 5:STAŁY The image_tag teraz nie dostarcza wiele w e-mailu, wyprowadzanie: http://assets/...png. Fffff.

UPDATE 6: mam zawężony go, że mam ten sam błąd z (w konsoli) app.url_for. Myślę, że to może być powiązane.

+1

Na wszelki wypadek, czy masz "root: to =>" coś "" w routes.rb? – dimuch

+0

@dimuch wyślę mój plik trasach watchout, to brzydkie. – krainboltgreene

+0

Czy możesz również pokazać kilka linii z szablonów, które powodują błąd? – dimuch

Odpowiedz

6

Więc prawdziwa odpowiedź brzmi, że link_to działa inaczej niż w ActionMailer ActionController. Różnica polega na tym, że najwyraźniej ActionController posiada opcję zwaną :script_name, a to sprawia, że ​​wszelkiego rodzaju założeń dla Ciebie.

Teraz natomiast nie zgadzam się z tą różnicą, że nie wiele można zrobić, więc oto co skończyło się robi:

link_to root_url, root_url 

Teraz, dlaczego miałbym używać obu? Cóż, dwa powody:

  1. Potrzebowałem adresu URL jako tekstu kotwicy i href.
  2. W przypadku zmiany adresu URL, nie chcę mieć do aktualizacji wszystkich tych ciągów.
+0

To niewiarygodne, spędziłem na tym nieoczekiwanym zachowaniu ponad 3 godziny, dziękuję bardzo, – antiqe

+0

Wielkie dzięki! Właśnie straciłam kilka godzin na radzenie sobie z tym. –

0

Problemem jest to, że koperty może pominąć opcję „host”? :)

+0

W moim pliku 'production.rb' mam ten zestaw:' config.action_mailer.default_url_options = {host : "www.connectforacause.com "}' – krainboltgreene