Nie mogę zrozumieć, jaka jest różnica między przestrzenią nazw a zakresem w routingu ruby-on-rails 3.
Czy mógłby ktoś wyjaśnić?
namespace "admin" do
resources :posts, :comments
end
scope :module => "admin" do
resources :posts, :comments
end
ruby-on-rails
Never_had_a_name
źródło
źródło
przykłady zawsze mi pomagają, więc oto przykład:
poda nam następujące trasy:
Korzystanie z zakresu ...
Da nam:
Oto dobra lektura na ten temat: http://edgeguides.rubyonrails.org/routing.html#controller-namespaces-and-routing
źródło
z prowadnicy szyn
„Zakres przestrzeni nazw zostanie automatycznie dodany,
:as
a także:module
i:path
przedrostki”.więc
jest taki sam jak
źródło
Zarówno zakres i nazw są scoping zestaw tras do danej opcji domyślnych.
Tyle tylko, że nie istnieją żadne opcje domyślne dla zakresu , a do nazw
:path
,:as
,:module
,:shallow_path
i:shallow_prefix
wszystko Opcje domyślne nazwy przestrzeni nazw.Dostępne opcje zarówno dla zakresu i obszaru nazw odpowiadają postanowieniom meczu .
źródło
zakres jest nieco skomplikowany, ale zapewnia więcej opcji do precyzyjnego dostrojenia tego, co chcesz zrobić.
zakres obsługuje trzy opcje: moduł, ścieżka i jako . Jeśli zobaczysz zakres ze wszystkimi opcjami it, będzie dokładnie taki sam jak przestrzeń nazw.
Innymi słowy, trasy generowane przez
jest taki sam jak
Innymi słowy, możemy powiedzieć, że nie ma domyślnych opcji zakresu w porównaniu z przestrzenią nazw. przestrzeń nazw domyślnie dodaje wszystkie te opcje. W ten sposób używając zakresu, możemy bardziej precyzyjnie dostroić trasy zgodnie z wymaganiami.
Jeśli przyjrzysz się dogłębnie domyślnemu zachowaniu zakresu i przestrzeni nazw , zauważysz, że zakres domyślnie obsługuje tylko : opcję ścieżki , gdzie jako przestrzeń nazw obsługuje trzy moduły opcji , ścieżkę i domyślnie.
Aby uzyskać więcej informacji, zapoznaj się z przestrzenią nazw i routingiem dokumentów .
źródło