2011-06-24 10 views

Odpowiedz

2

Znam jedną możliwą odpowiedź dla _path, ale to samo nie działa dla mnie _url. Ktoś wie dlaczego?

# at the bottom of config/routes.rb 
module ActionView::Helpers::UrlHelper 
    def model_name_path model, args={} 
     # your implementation 
    end 
end 
+0

Och, myślę, że to działa również dla _url, tylko że dzwoniłem do _url ze kontrolera, a nie widoku. – Ben

+0

Powiedz, że mam nazwę metody pomocniczej o nazwie user_links, gdzie mogę określić nazwę metody na przykład,. Mam model Post. Mój kod wygląda następująco: - ~ moduł ActionView :: Helpers :: UrlHelper def post_name_path post, args = {} # twoja implementacja -> co dokładnie powinno to mieć? koniec koniec ~ – boddhisattva

+0

Przykro mi, próbowałem użyć odpowiedniego bloku kodu, ale jakoś nie udało się go w sekcji komentarzy. – boddhisattva

4

To rozwiązanie sprawdziło się u mnie.

Dodaj ten kod na końcu pliku config/routes.rb. Pamiętaj, aby zastąpić MyApp nazwą aplikacji.

MyApp::Application.routes.named_routes.module.module_eval do 
    def model_name_path(*args) 
    # Your code here 
    end 

    def model_name_url(*args) 
    # Your code here 
    end 
end 

MyApp::Application.routes.named_routes.instance_eval do 
    @helpers += [:model_name_path, :model_name_url] 
end 

Te niestandardowe metody będą dostępne w kontrolerach, widokach i testach.

+1

w Rails 4: Rails.application.routes.named_routes.url_helpers_module.module_eval do ... – luckyjazzbo

Powiązane problemy