2010-11-02 27 views
10

Kaynaklarda URL'ler nasıl kullanılır? Örneğin, /my-model/ veya /my-model/1. Güzergâhı resources :"my-model" olarak tanımlarsam, raylar def hash_for_my-models_url(options = nil) yöntemini oluşturduğundan sözdizimi hatası alıyorum.Raylarda kısa çizgi kaynakları 3 rotalar

+0

olası bir kopyası [In Ruby on Rails Yönlendirme Kullanmak İstiyorum Dash Kullanmak İsterdim \ '- \ 'Altçizgi yerine \' \ _ \'] (http://stackoverflow.com/questions/5334465/in-ruby- on-raylar-yönlendirme-i-would-to-use-dash-yerine-alt-çizgi) –

cevap

14

vb

my_model_index GET /my-model(.:format) {:action=>"index", 
    :controller=>"my_model"} 

yılında

map.resources :my_model, :as => "my-model" 

sonuç ... ... :

resources "my-models", :as => :my_models, :controller => :my_models 

GÜNCELLEME: Timo Saloranta'nın dediği gibi, en son Rails 3 sürümlerinde :controller => :my_models olmadan çalışır.

+1

Ben de bu işe yaradığını düşünüyorum (fark, rota yardımcılarının isimlendirilmesinde olurdu): 'kaynaklar: product_types,: path => '/ product-types'' – sandstrom

+3

** controller olmadan çalışır * * En yeni Rails 3 sürümleri ile parça. –

0

Özel bir rota denediniz mi?

map.connect "/my-model/:id", :controller => 'my-model-controller', :action => 'read' 

Bu, 'my-model-controller.rb' yönteminin 'read' yöntemini çağırır.

+0

Evet bu açık bir çözümdür ama ilginçtir, kaynakları kullanarak tire güzergahlarını tanımlamanın nasıl mümkün olabileceği ilginçtir. –

2

Sen hyphenated URL'ler ile becerikli yolları yapılandırmak için :as seçeneğini kullanabilirsiniz: Ben çözüm bulduk

+0

Bunu yapmak için zaten uğraşıyorum. Ben tire adlandırılmış modelini kullanırken aynı hatayı alıyorum. –

+0

Bir sembol yerine alıntılanmış bir dize kullandığınız zaman bile? – zetetic

+0

Evet ... Bu konuda teşekkür ettiğim ilk şeydi .. –