2013-06-04 18 views
8

Czy istnieje sposób interpolacji w wywołaniu pomocnika trasy?Interpolacja w routerze Pomoc dla trasy

Mam częściowe, w których przekazuję zasób (Użytkownik, Galeria itp.) Jako lokalny o nazwie resource. Muszę link do edycji zasobu, ale muszę odnośnik być różne dla każdego zasobu:

Dla użytkownika łącza musi użyć pomocnika edit_user_path dla Galerii musi używać edit_gallery_path itp

więc muszę sposób interpolacji nazwę zasobu do pomocnika (pseudo kod): edit_{resource.name}_path

+0

Jeśli używasz dziedziczone Resources, masz pomocnika url 'edit_resource_path (zasobów)' dostępny (https://github.com/josevalim/inherited_resources#url-helpers) – MrYoshiji

+0

@MrYoshiji wygląda właściciel GEM zawiera przestarzałe go . – Undistraction

+0

Arf, ten klejnot przynosi tak wiele czarnej magii i dezorientujących rzeczy, a teraz wycofują metody bez aktualizacji swojego dokumentu! – MrYoshiji

Odpowiedz

18

można zastąpić edit_user_path z send("edit_user_path"). Zweryfikowano już w konsoli.

Teraz można interpolować ciąg wewnątrz.

+4

Ładnie wykonane. Aby nieco rozszerzyć odpowiedź: "wyślij (" edit _ # {resource.class.to_s.underscore()} _ ścieżka ", zasób)'. – Undistraction

+0

Muszę to zrobić w widoku, więc otrzymuję "błąd metody niezdefiniowanej". Czy wiesz, na które połączenie klasowe jest wysyłane? W konsoli robię 'app.send..' – cortex

+0

@cortex, to powinno być w stanie pracować w widoku tak jak OP robi. Również nie ma klasy, ponieważ nazwana ścieżka należy do instancji aplikacji Rails. Jeśli nadal masz problem, możesz wysłać nowe pytanie ze szczegółami. –