2011-02-25 14 views
26

Czy możliwe jest generowanie bezwzględnych adresów URL w szynach przy użyciu łącza do? [UWAGA: To jest w Mailer]Bezwzględny adres URL z link_to ... Ruby on Rails

próbowałem zrobić:

<%= link_to root_url, root_url%> 

Ale pojawia się błąd wykonania:

* Brakujące gościć odnośnik do! Proszę podać: Parametr hosta lub zestaw default_url_options [: host] *

muszę to być dynamiczna, ponieważ aplikacja będzie działać w domenie wieloznacznego (* .domena.com)

+0

Dlaczego musisz URL być bezwzględny w tym przypadku? Względny URL będzie w stosunku do bieżącego hosta, który brzmi jak to, co chcesz – Gareth

+0

Jedynym powodem, dla którego mogę myśleć, jest to, że ten link zostanie osadzony w wiadomości e-mail. Czy to się dzieje tutaj Chris? –

+0

Tak, jestem w wiadomości e-mail –

Odpowiedz

0

W routes.rb wkładki:

root :to => 'controller#action' 

Lub zastąp aktualny plik map.root poprawnym.

zobacz dokumentację na ten temat: routes.rb usage

+0

Jestem pewien, że "map" w routes.rb dotyczy tylko Rails 2. – Tronathan

+0

@Tronathan Masz rację aktualizuję tę starą odpowiedź :) – Awea

38

Jeśli używasz _url przyrostek wygenerowany adres URL jest absolutna. Użyj adresu URL _path, aby uzyskać względny adres URL.

<%= link_to "Home", root_url %> 

<%= link_to "Home", root_path %> 
+3

To działa dobrze od zwykłego widoku, ale z mailera nie mam tyle szczęścia ... –

+5

W Mailer musisz przekazać lub skonfigurować domyślnego hosta. –

+2

Co się stanie, jeśli host jest dynamiczny. * .domain.com? –

6

zależności od przypadku użycia, interpolacja ciąg może być dobrym rozwiązaniem:

link_to(body, "http://#{site_url}")