2013-04-03 9 views
5

Si tratta di due percorsi ho dichiarato nel mio config/file di routes.rb:Perché le rotaie non generano un helper del percorso per la mia rotta di "partita"?

namespace :projects do 
    match "proj_rapports_contributeur/select" => 'proj_rapports_contributeur#select', :via => :get 
    match "proj_rapports_contributeur/generate/:id" => 'proj_rapports_contributeur#generate', :via => :get 
    end 

Questa è la risultante rotte e aiutanti rotaie generano con rake routes:

projects_proj_rapports_contributeur_select_fr  /hierarchie/rapports_contributeur/selectionner(.:format)            projects/proj_rapports_contributeur#select {:locale=>"fr"} 
projects_proj_rapports_contributeur_select_en  /en/projects/proj_rapports_contributeur/select(.:format)            projects/proj_rapports_contributeur#select {:locale=>"en"} 

                /hierarchie/rapports_contributeur/generer/:id(.:format)            projects/proj_rapports_contributeur#generate {:locale=>"fr"} 
                /en/projects/proj_rapports_contributeur/generate/:id(.:format)           projects/proj_rapports_contributeur#generate {:locale=>"en"} 

Non capisco perché le rotaie non hanno generato un helper del percorso per il secondo percorso?

Non essere sorpreso con il percorso tradotto. Sto usando la gemma 'rotaie-translate-percorsi' di tradurre le rotte (Resource: https://github.com/francesc/rails-translate-routes)


UPDATE === per risposta finale ===

Secondo l'answeer, per coloro che vogliono conoscere la parola fine, qui le vie userò:

namespace :projects do 

    get "proj_rapports_contributeur/select" => 'proj_rapports_contributeur#select' 
    get "proj_rapports_contributeur/generate/:id" => 'proj_rapports_contributeur#generate', :as => 'proj_rapports_contributeur_generate' 
    end 

E questi sono gli aiutanti liberati:

projects_proj_rapports_contributeur_select_fr GET /hierarchie/proj_rapports_contributeur/selectionner(.:format)            projects/proj_rapports_contributeur#select {:locale=>"fr"} 
projects_proj_rapports_contributeur_select_en GET /en/projects/proj_rapports_contributeur/select(.:format)             projects/proj_rapports_contributeur#select {:locale=>"en"} 
projects_proj_rapports_contributeur_generate_fr GET /hierarchie/proj_rapports_contributeur/generer/:id(.:format)            projects/proj_rapports_contributeur#generate {:locale=>"fr"} 
projects_proj_rapports_contributeur_generate_en GET /en/projects/proj_rapports_contributeur/generate/:id(.:format)            projects/proj_rapports_contributeur#generate {:locale=>"en"} 

risposta

7

Questo perché il percorso non è un percorso semplice, contiene un parametro (nel tuo caso: id). In questo caso, è necessario specificare il nome della rotta manualmente utilizzando as

match "proj_rapports_contributeur/generate/:id" => 'proj_rapports_contributeur#generate', :via => :get, :as => "your_route_name" 

Come nota a margine, sostituire match + via con il nome del metodo corrispondente.

get "proj_rapports_contributeur/generate/:id" => 'proj_rapports_contributeur#generate' 

E 'più corto, e abbinare è deprecato in Rails 4.

+0

Grazie! E 'un peccato che non possiamo trovare alcuna informazione su "get" né su route-helper con route usando i parametri nel documento ufficiale http://guides.rubyonrails.org/routing.html – Douglas