2013-04-03 45 views
5

Đây là hai tuyến đường i khai báo trong config/tập tin routes.rb của tôi:Tại sao đường ray không tạo trình trợ giúp tuyến đường cho tuyến đường 'phù hợp' của tôi?

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 

Đây là kết quả tuyến đường và những người giúp đỡ ray tạo với 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"} 

Tôi không hiểu tại sao đường ray không tạo ra một trợ giúp tuyến đường cho tuyến đường thứ hai?

Đừng ngạc nhiên với tuyến đường đã dịch. Tôi đang sử dụng đá quý 'đường ray-dịch-tuyến đường' để dịch các tuyến đường (Resource: https://github.com/francesc/rails-translate-routes)


CẬP NHẬT === cho ĐÁP CUỐI CÙNG ===

Theo answeer, cho những người muốn biết từ kết thúc, ở đây nó trở thành tuyến đường tôi sẽ sử dụng:

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 

Và đây là những người giúp đỡ kết quả:

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

Trả lời

7

Điều này là do tuyến đường không phải là một tuyến đường đơn giản, nó chứa một tham số (trong trường hợp của bạn: id). Trong trường hợp này, bạn nên xác định tên đường bằng cách thủ sử dụng as

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

Là một mặt lưu ý, thay thế match + via với tên phương pháp tương ứng.

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

Đó là ngắn hơn, và trận đấu bị phản đối trong Rails 4.

+0

Cảm ơn! Thật đáng tiếc, chúng tôi không thể tìm thấy bất kỳ thông tin nào về "nhận" cũng như trên những người trợ giúp tuyến đường bằng cách sử dụng các thông số trong tài liệu chính thức http://guides.rubyonrails.org/routing.html – Douglas

Các vấn đề liên quan