2011-07-26 14 views
8

Benzersiz bir tanımlayıcı olan Thread (id, uuid) uuid gibi bir model verildi. Ben varsayılan yolları değiştirmek istiyorum: id ancak kullanıcıya:yolları.rb, yollar için farklı bir birincil anahtar nasıl ayarlanır?

edit_thread GET /threads/:id/edit(.:format)      {:action=>"edit", :controller=>"threads"} 
thread GET /threads/:id(.:format)        {:action=>"show", :controller=>"threads"} 
PUT /threads/:id(.:format)        {:action=>"update", :controller=>"threads"} 

kullanmamak için uuid bu Raylar/routes.rb mümkün yapılır nasıl ---?

Teşekkür

cevap

-1

:id istediğiniz gibi değiştirilebilir. Doğru anladıysam, sen yerine emin olmak Kişisel params karma size rotalara seçim adıyla doldurulur alır, bu nedenle :uuid olarak değiştirdim eğer (o = Model.find_by_uuid(params[:uuid]))

+0

Teşekkürler ama almadığım şey rotalarımda nasıl değiştirileceğidir? Bir grup maç yapmam gerekiyor mu? Rayların bunun için daha zarif bir ortam olacağını düşünmekteydim ... thxs – AnApprentice

+1

@AnApprentice: Üzgünüm, kaynak yollarındaki 'id' parametresini değiştirmek istediğinizi kastetmediniz. Bunun mümkün olduğunu düşünmüyorum (burada raylar konvansiyonundan ayrılıyorsunuz). Benzer bir soru daha önce sorulmuştur: (http://stackoverflow.com/questions/810385/how-to-rename-the-default-identifier-param-id-in-rails-map-resources). – cam

7

buna göre Denetleyicilerinizi değiştirmeniz gerekir sadece ediyorum :id alanı, Raylar, yollarda :uuid alanını kullanır.

modeliniz to_param yöntemini geçersiz içimdekibu, başarmak oldukça kolaydır: Bu yardımcı olur

thread = Thread.find_by_uuid(params[:id]) 

Hope:

def Thread 
    def to_param 
    uuid 
    end 
end 

ve controller içerisinde

, gibi bir şey yazmak zorunda kalacaktır.

İlgili konular