2010-08-04 16 views
6

Aşağıdaki rota tanımlamış:Uzantı kimliğin bir parçası olarak tutmak için bir ray yolunu nasıl alabilirim?

map.resources :images, :only => [ :index, :new, :destroy ] 

ben ne zaman aşağıdaki alıyorum bir rake routes:

image DELETE /images/:id(.:format) {:action=>"destroy", :controller=>"images"} 

Benim sorunum ise hiç uzantısı dahil benim :id gibi dosya isimleri kullanmak istiyorum . Şu anda kimlikler kontrolöre eksi uzatıyor. Aşağıdaki yolu üretmek için yukarıdaki map.resources özelleştirebilirsiniz herhangi bir yolu var mı:

image DELETE /images/:id {:action=>"destroy", :controller=>"images"} 

uzatma :format olarak kullanmış değil yani ?

cevap

4

. karakter ActionController::Routing::SEPARATORS tanımlanır, özel listeler URL'yi bölen karakterler.

URL'yi . s'ye bölmekten kaçınmak istiyorsanız, :constraints => { :id => /regexp/ } bağımsız değişkenini map.resources'a iletmeniz gerekir. Daha fazla bilgi için bkz. my related question and answer.

+0

nonse olabilir, format için bir oluşturucu bulmaya çalışacağız Teşekkürler, regex hile yaptı. Rails3 kullanımı için – tpower

+2

: gereksinimleri yerine –

1

Ben denetleyiciye sağlam id geçmesine nasıl çözemedim ama bu kimliği yeniden oluşturmak için kullanılan etrafında iştir:

id = [ params['id'], params['format'] ].compact.join '.' 
+0

Bu, dosya adlarınızın çok katı bir dosya adı izlediğini varsayar. Bu format, ancak kullanıcıları büyük olasılıkla boşluklar, birden çok nokta içerecek ve kim bilir, bunları yerleştirme yeteneğinizi neredeyse tamamlayacak kaçmadan URL’de. – tadman

+0

Doğru, Bazı URL kodlamaları eklemeliyim. – tpower

+0

iyi, bu orijinal verilere ulaşmak için çalışır, ancak Raylar hala – Tilo

İlgili konular