Jaka jest różnica między resource
i resources
w szynach routinguRóżnica między zasobami i zasobami w routingu tras?
resource :geocoder
i
resources :posts
Co to prawdziwa różnica między nimi?
Jaka jest różnica między resource
i resources
w szynach routinguRóżnica między zasobami i zasobami w routingu tras?
resource :geocoder
i
resources :posts
Co to prawdziwa różnica między nimi?
Zasadniczo, zasoby routingu mają miejsce, gdy zasoby dają możliwości działania kontrolerowi.
http://guides.rubyonrails.org/routing.html#specifying-a-controller-to-use
Jeżeli liczbę mnogą zasoby są wykorzystywane jako sposób do obsługi ogólnych wniosków na temat każdej pozycji, a następnie pojedyncza zasób jest droga do pracy na danej pozycji w zasięgu ręki.
Innymi słowy, jeśli posiadam kolekcję jabłek, aby pobrać określone jabłko, muszę powiedzieć routerowi "Jabłka", jakie jabłko pobrać, wysyłając identyfikator jabłka. Jeśli mam już jedno Apple, identyfikator nie jest potrzebny.
Wskazówka różnice między nimi, patrząc na jakie działania (lub trasy) zostali:
W przykładzie:
http://guides.rubyonrails.org/routing.html#singular-resources
Czasami masz zasób, że klienci zawsze patrzeć w górę bez odwołującego identyfikator. Na przykład chcesz/profil, aby zawsze pokazywać profil aktualnie zalogowanego użytkownika. W takim przypadku można użyć pojedynczego zasobu do odwzorowania/profilu (zamiast/profilu /: id) na akcję pokazu .
Dobrym sposobem, aby to zobaczyć, jest to, że zasób nie ma akcji indeksu, ponieważ ma być tylko jeden.
Myślę, że tylko widok indeksu.
również zgłaszano problemy z routingiem za pomocą helpera zasobów i pomocników formularzy. Osobiście używać składni:
resources :someresource, except: :index
w celu uniknięcia reported bugs.
Singular Zasoby:
Czasami masz zasób, że klienci zawsze patrzeć w górę bez odwoływania identyfikator. Na przykład, chcesz, aby /profile
zawsze pokazywał profil aktualnie zalogowanego użytkownika.
Albo Normalnie aktualnie zalogowanego użytkownika należy do jednej organizacji, tak aby goto jego/jej profilowa organizacja nie może być dwie trasy
#1
/organizations/:id
#2
/organization #simply
Tutaj późniejsza realizacja większy sens; Czyż nie? dostajesz przedmiot Organizacji od stowarzyszenia
# in organizations#show
@organization = current_user.organization
Aby zdefiniować taką osobliwą zasób użyć resource
sposób: Przykład
# in routes.rb
resource :organization
tworzy sześć różnych tras w aplikacji, wszystkie mapowanie do kontrolera organizacje:
podczas gdy ty definiujesz wiele zasobów używając resources
Metoda
resources :organizations
Moja dezorientacja: jaki jest sens w tworzeniu pojedynczej zasobów; powiedzmy, że zdefiniowaliśmy 'resource: geocoder'; czy to oznacza, że będziemy mieli pojedynczy rekord "geocoder" w całej "tabeli" zwanej "geocoders"? – illusionist
W linku do artykułu (który został zaktualizowany, odkąd to opublikowałem), oni faktycznie dali dobry przykład. Pojedynczy zasób o nazwie/profile (zamiast/profile: id), byłby przydatny, aby zawsze wyświetlać profil aktualnie zalogowanego użytkownika. Tak więc pojedynczy geocoder może należeć do lokalizacji obecnego użytkownika, gdzie jako geokodery liczby mnogiej może należeć do zbioru miejsc w pobliżu. Od Ciebie zależy, czy chcesz włączyć do tej kolekcji swój własny geocode. – sksallaj