2013-04-03 9 views
5

To dwie trasy i zadeklarowane w moim pliku config/routes.rb:Dlaczego tory szynowe nie generują pomocnika trasy dla mojej "dopasowanej" trasy?

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 

To powstałe trasy i pomocników szyn wygenerować z 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"} 

Nie rozumiem dlaczego szyny nie wygenerowały pomocnika trasy dla drugiej trasy?

Nie bądź zaskoczony przetłumaczoną trasą. Używam gem 'rails-translate-połączeniach' przetłumaczyć trasy (zasób: https://github.com/francesc/rails-translate-routes)


=== UPDATE na odpowiedź FINAL ===

Według answeer, dla tych, którzy chcą wiedzieć słowo end, tu trasy będę używał:

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 

A oto wynikające pomocnicy:

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"} 

Odpowiedz

7

Dzieje się tak dlatego, że trasa nie jest prostą trasą, zawiera parametr (w twoim przypadku: identyfikator). W takim przypadku należy podać nazwę trasy ręcznie przy użyciu as

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

Na marginesie należy wymienić match + via z odpowiednią nazwą metody.

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

Jest krótsza, a mecz jest przestarzałe w Rails 4.

+0

Dzięki! Szkoda, że ​​nie możemy znaleźć żadnych informacji na temat "get" ani na temat pomocników trasy z trasą z parametrami w oficjalnym dokumencie http://guides.rubyonrails.org/routing.html – Douglas