2011-03-21 10 views
29

Jak uzyskać ścieżkę do zasobu w modelu? Muszę go zapisać w bazie danych i chciałbym uzyskać ten sam URL, co w resourcename_path (zasób)Szyny, pobierz ścieżkę zasobu w modelu

+2

Dla najpełniejszych odpowiedzi, patrz http://stackoverflow.com/q/341143/793946 –

Odpowiedz

38

W Railsach 3 można dołączyć pomocników do adresów URL w modelach (choć zwykle nie jest to najlepszy sposób postępowania z rzeczy):

class MyClass < ActiveRecord::Base 
    include Rails.application.routes.url_helpers 
end 

W Rails 2, myślę, że to include ActionController::UrlWriter, ale nie mogę sobie przypomnieć. Google to twój przyjaciel.

+1

Rails 2 jest actionView :: Pomocnicy: UrlHelper i ActionController :: UrlWriter – jvatic

+0

własnych szynach 3 rozwiązanie generuje następujący błąd: RuntimeError : Brak hosta do połączenia z! Podaj: parametr hosta lub set default_url_options [: host] – jvatic

+0

@jvatic, Jeśli używasz _url w przeciwieństwie do _path, musisz powiedzieć mu, co to jest host. W widokach może przyjąć bieżący host, ale modele nie mają o tym wiedzy i trzeba im powiedzieć, czego używać. – idlefingers

60

W szyny 3 i szyn 4 można go użyć:

Rails.application.routes.url_helpers 

np

Rails.application.routes.url_helpers.posts_path 
+1

Jedna godzina wyszukiwania i nikomu się to nie udało daj mi tak prostą i jasną odpowiedź jak twoja. Wielkie dzięki. – dimitarvp

+3

FYI, jeśli potrzebujesz dostępu do tras dla silników, odpowiednik to: MyEngineName :: Engine.routes.url_helpers.some_path –

+0

Dzięki Theo! Właśnie tego szukałem. – Docunext

Powiązane problemy