2009-09-25 13 views
11

Chcę utworzyć adres URL w mojej aplikacji rails, który wskazuje na inny serwer, który nie jest uruchomiony. Używanie url_for prawie spełnia moje wymagania, ale wymaga klucza kontrolera, którego nie potrzebuję (przekierowując na stronę najwyższego poziomu w witrynie zewnętrznej).Generowanie zewnętrznego adresu URL w szynach

Powodem, dla którego chcę to zrobić, jest czysta konstrukcja adresu URL z hashem argumentów (niektóre z nich są określane w czasie wykonywania).

+1

Pokochałbyś Google - 1 godzina po zadać swoje pytanie, to 6. wynik dla "szyny generują zewnętrzny adres URL". – nfm

Odpowiedz

3

Co sądzisz o URI::HTTP?

+1

Niestety nie mogę przekazać ciągu zapytania tak, jak wolałbym, ale jest wystarczająco blisko. Trochę dziwne jest to, że użycie 'HTTPS :: build' z metodą' to_s' zwraca https uri, podczas gdy użycie metody 'request_uri' zwraca http uri. –

+0

Nie znam łatwego rozwiązania problemu z hashowaniem na prametry. Jeśli nie potrzebujesz parametrów zagnieżdżonych, prawdopodobnie możesz utworzyć prostą funkcję, aby to zrobić. Funkcja URI :: HTTPS.request_uri() zwraca tylko ścieżkę i ciąg zapytania. Wszystko wcześniej zostało pominięte. Możesz go łatwo wypróbować w konsoli Rails. – Roman

26

Można zadzwonić to_query na Hash w szynach, które zajmie url kodowania itd. Więc może coś takiego:

params = { 
    :a => "http://google.com", 
    :b => 123 
} 
url = "http://example.com?#{params.to_query}" 
Powiązane problemy