2012-01-03 9 views
6

URL'de NoktaRaylarda Yönlendirme. Benim <code>Category</code> modelinde <code>to_param</code> yöntemi üzerine olan

def to_param 
    name 
end 

Ve name parametre hiç nokta (foobar) içermez

get '/:id' => 'categories#show', :as => :category 

routes.rb, tamam çalışır, ancak ne zaman (f.o.o.b.a.r) No route matches [GET] bir hatayla karşılaşıyorum. Yani sorum şu: parametrenin bir parçası gibi yönlendirmede nokta kullanmak mümkün mü? Ya da bu amacı gerçekleştirmek için ne yapabilirim, belki bir kanca ya da bir şey. Herhangi bir yardım takdir edilir.

cevap

15

Bu güzergahın kısıtlamaları değiştirebilirsiniz:

get ':/id' => "categories#show", :as => :category, :constraints => { :id => /[\w+\.]+/ } 

Bu rota artık herhangi bir kelime karakterle veya bir nokta içeren herhangi dizeye :id eşleşir.

+6

Bu regexp sadece bir kelimeyi yalnızca bir nokta ile eşleştirir. '/ [\ W \.] + /' Kullanmanız gerekir. –

+0

Dylan: Teşekkürler, bunu güncelledim. –

+0

Bunun nasıl bir çözüm olduğunu göremiyorum. URL'de, en az bir '%' olması muhtemel ve en az 1 noktaya sahip olması gereken kelime olmayan karakterler varsa kırılır. Başını keserek baş ağrısını tedavi etmek gibi. Bu doğru çözümdür: http://stackoverflow.com/questions/5369654/why-do-routes-with-a-dot-in-a-parameter-fail-to-match – believesInSanta

İlgili konular