Reescrever rotas de coleção / membros padrão

À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_pathe 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.