Search code examples
rubyruby-on-rails-4routespathname

How write only once path_names on routes and make available for all of routes in Rails 4.1?


I want to turn my path_names translated only once, and turns he available for all of routes in the routes.rb.

This is my routes.rb now:

PATH_NAMES = { new: 'novo', edit: 'editar', show: 'ver' }

Rails.application.routes.draw do

  devise_for :users, controllers: { omniauth_callbacks: 'omniauth_callbacks',
                                    registrations: 'registrations' }

  resources :movements, :path => 'fluxo-de-caixa', path_names: PATH_NAMES
  resources :movement_categories, :path => '/fluxo-de-caixa/categorias', path_names: PATH_NAMES
  resources :installments, :path => 'parcelas', path_names: PATH_NAMES
  resources :contracts, :path => 'contratos', path_names: PATH_NAMES
  resources :accounts, :path => 'contas', path_names: PATH_NAMES
  resources :events, :path => 'eventos', path_names: PATH_NAMES
  resources :users, :path => 'usuarios', path_names: PATH_NAMES
  resources :spectator, :path => 'espectadores', path_names: PATH_NAMES

  devise_scope :user do
    get '/cadastrar' => 'devise/registrations#new'
    get '/entrar' => 'devise/sessions#new'
    get '/editar' => 'devise/registrations#edit'
    delete '/sair' => 'devise/sessions#destroy'
  end

  root 'home#index'
end

I hope you help me!!

My regards! ;D


Solution

  • use scope:

    scope(path_names: { new: 'novo', edit: 'editar', show: 'ver' }) do
      resources :movements, :path => 'fluxo-de-caixa'
      resources :movement_categories, :path => '/fluxo-de-caixa/categorias'
      resources :installments, :path => 'parcelas'
      resources :contracts, :path => 'contratos'
      resources :accounts, :path => 'contas'
      resources :events, :path => 'eventos'
      resources :users, :path => 'usuarios'
      resources :spectator, :path => 'espectadores'
    end