2013-04-03 6 views
5

यह दो मार्गों मैं अपने config/routes.rb फ़ाइल में घोषित है:रेल मेरे 'मैच' मार्ग के लिए मार्ग सहायक क्यों नहीं बना रहे हैं?

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

मैं क्यों समझ में नहीं आता:

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 

इस जिसके परिणामस्वरूप मार्गों और सहायकों रेल rake routes साथ उत्पन्न है रेल ने दूसरे मार्ग के लिए मार्ग सहायक नहीं बनाया?

अनुवादित मार्ग से आश्चर्यचकित न हों। मैं मार्गों का अनुवाद करने में मणि 'रेल-अनुवाद-मार्गों' का उपयोग कर रहा (स्रोत: https://github.com/francesc/rails-translate-routes)


के लिए अंतिम जवाब ===

=== अद्यतन answeer के अनुसार, के लिए उन यह अंत शब्द जानने की चाह मार्गों मैं का उपयोग किया जाएगा यहाँ,:

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 

और इन जिसके परिणामस्वरूप सहायकों हैं:

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

उत्तर

7

ऐसा इसलिए है क्योंकि मार्ग एक आसान मार्ग नहीं है, इसमें एक पैरामीटर (आपके मामले में: आईडी) है। इस मामले में, आप मैन्युअल रूप से as

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

का उपयोग कर एक पक्ष नोट के रूप में मार्ग का नाम निर्दिष्ट करना चाहिए, इसी विधि नाम से प्रतिस्थापित match + via

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

यह कम है, और मैच रेल में अब मान्य नहीं है 4.

+0

धन्यवाद! यह एक शर्म की बात है कि हमें आधिकारिक डॉक्टर http://guides.rubyonrails.org/routing.html में पैरामीटर का उपयोग करके रूट के साथ "प्राप्त" और न ही रूट-हेल्पर्स पर कोई जानकारी नहीं मिल सकती है। – Douglas

संबंधित मुद्दे