Potrzebuję jednej ścieżki dostępnej poprzez wiele nazw. W moim routes.rb
zrobiłemNazwa trasy alias
get '/route' => 'controller#edit', :as => 'name_a'
get '/route' => 'controller#edit', :as => 'name_b'
Działa to dobrze, ale ładuje tabelę tras za nic. Z mojego rozumienia dokumentacji, :as
określa metodę pomocnika po wywołaniu.
Poszedłem więc do mojego ApplicationController
i dodał
alias_method :name_b, :name_a
i usunąłem drugą linię z routes.rb
ale nie z Uncaught exception: undefined method name_a for class ApplicationController
jest jakiś właściwy sposób mający dwie nazwy pojedyncza ścieżka?
================= EDIT ==================== Opracowanie:
I użyj Devise gem do zarządzania sesją, rejestracją, blokowaniem itp. 2 rodzajów użytkowników, nazwijmy je Admin
i Guest
. Klejnot bardzo dobrze się układa, ale prosi o to, by ostateczne nazwy tras zachowywały się właściwie.
W moim przypadku, o ile Devise dotyczy tylko proces rejestracji jest inny, więc staram się zbudować strukturę, która wygląda następująco:
app
controllers
users
admin
registration_controller.rb
guest
registration_controller.rb
session_controller.rb
password_controller.rb
registration_controller.rb
Admin
i Guest
kontrolerów dziedziczą z powyżej registration_controller, który dziedziczy od Devise.
Teraz, aby działać poprawnie, Devise potrzebuje na przykład nazw guest_user_password
i admin_user_password
do tworzenia lub usuwania wyszukiwania haseł. W moim przypadku obie są pod tą samą ścieżką, więc chcę obie nazwy przekierować do tego samego kontrolera "użytkownicy/hasło".
Ważniejsze, i dlatego naprawdę chciałem alaisingu. Czy moje poglądy nie powinny przejmować się, czy ma do czynienia z trasami Admin
i Guest
podczas przekierowywania do kontrolera pobierania haseł. Oba są użytkownikami, więc chcę użyć obu tych opcji.
Stąd moje pytanie. :)
Należy również zauważyć, że jak to napisałem, wszystko działa. Po prostu staram się uzyskać "najbardziej elegancki sposób" napisania tego.
The: as => 'name_a' tworzy alias, którego możesz użyć dla trasy, na przykład name_a_path i name_b_path, jego mechanizm routingu, a nie coś, co dzieje się w kontrolerze. –
Oznacza to, że nie, nie ma innego sposobu, jak tylko załadować tabelę routingu. :(Dzięki, – muichkine
Dlaczego na świecie powinieneś odwoływać się do tej samej ścieżki różnymi nazwami? – Catfish