Às vezes, você deve reescrever a coleção padrão ou as rotas dos membros nos trilhos para adicionar ou substituir os parâmetros padrão. Por exemplo, você tem controlador “canais” e deseja ter caminhos como ” caminho dos canais ” e “ caminho do canal “. Na ação de índice, você deseja ter a opção “sinalizar” para coleta de filtros, como channels/active
:, mas o URL de índice padrão se parece com “/ canais”. E para o membro que você quer como url category/name
. Para reescrever o url da coleção, você pode apenas usar :as => (empty string)
:
resources :channels do
get '(/:flag)', :defaults => {:flag => 'all'}, :as => '', :on => :collection
end
Mais difícil de reescrever o url do membro, porque se você escrever
resources :channels do
get ':category/:slug', :as => '', :on => :member
end
você tem url like :id/:category/:slug
. Para aplicar o novo formato de url, você deve usar “recurso” em vez de “recursos”:
resource :channel, :path => ':category/:slug'
Agora você tem channels_path
e correto channel_path
.
Por que não usar fósforo? Porque se você quiser usar controladores aninhados, você deve escrever “match” para todas as ações do controlador aninhado.