Não consigo entender qual é a diferença entre um namespace e um escopo no roteamento de ruby-on-rails 3.
Alguém poderia explicar?
namespace "admin" do
resources :posts, :comments
end
scope :module => "admin" do
resources :posts, :comments
end
ruby-on-rails
never_had_a_name
fonte
fonte
exemplos sempre me ajudam, então aqui está um exemplo:
nos dará as seguintes rotas:
Usando escopo ...
Nos dará:
Aqui estão algumas boas leituras sobre o assunto: http://edgeguides.rubyonrails.org/routing.html#controller-namespaces-and-routing
fonte
do guia dos trilhos
"O escopo do namespace será adicionado automaticamente
:as
, bem como prefixos:module
e:path
."tão
é o mesmo que
fonte
Tanto o escopo quanto o namespace estão definindo um conjunto de rotas para as opções padrão fornecidas.
Só que não há opções padrão para escopo , e por namespace
:path
,:as
,:module
,:shallow_path
e:shallow_prefix
todas as opções padrão para o nome do namespace.As opções disponíveis para o escopo e o namespace correspondem àquelas de correspondência .
fonte
o escopo é um pouco complexo, mas oferece mais opções para ajustar exatamente o que você deseja fazer.
O escopo oferece suporte a três opções: módulo, caminho e como . Se você vir o escopo com todas as opções, será exatamente o mesmo que o namespace.
Em outras palavras, as rotas geradas por
é o mesmo que
Em outras palavras, podemos dizer que não há opções padrão para o escopo em comparação com o namespace. namespace adiciona todas essas opções por padrão. Assim, usando o escopo, podemos ajustar mais as rotas conforme necessário.
Se você der uma olhada aprofundada no escopo e no comportamento padrão do namespace , descobrirá que o escopo, por padrão, suporta apenas : opção de caminho , onde o namespace oferece suporte a três opções de módulo, caminho e como padrão.
Para obter mais informações, consulte um doc namespace-and-routing .
fonte