2015-04-07 3 views
9

İsteğe bağlı parametrelerle birlikte değişen siparişe sahip bir Rails rotası oluşturmaya çalışıyorum. Ben parametreleri gibi ama parametre URL stil olmadan onları haritası filtreler yolları oluşturmak için çalışıyorum Routes with multiple, optional, and pretty parametersRaylar 3 Birden Fazla İsteğe Bağlı Parametreyle Rota

:

Bu soru benzer bir sorun açıklanır. Fikir onları

/search/country/:country/ 
/search/country/:country/state/:state/ 
/search/country/:country/state/:state/loc/:lat/:long/ 

benziyor sahip olmaktır ama aynı zamanda ben rota globbing karmaşık düzenli ifade ifadeleri yazabilirsiniz biliyoruz

/search/state/:state/ 
/search/state/:state/country/:country/ 
/search/loc/:lat/:long/ 

arama yapması gerekir - ancak ben merak ediyorum Belirtilmemiş siparişle birden fazla isteğe bağlı yol parametresine sahip olmanın bir yolu var,

/search/((/country/:country)(/state/:state)(/loc/:lat/:long)) 

Teşekkürler!

+0

Ben zaten sorun yani regexp'in en iyi çözüm olduğunu düşünüyorum – RAJ

+0

Başka bir yol, belki de en iyisi değil, sadece 'route.rb' – RPinel

+0

'unuzdaki birden çok girdiye sahip olmak istiyorum Bu sorunu çözmek için Regex'i kullandım ama Rails5 protokolünün çoklu isteğe bağlı desteği için bir istek olup olmadığını merak ediyorum parametreleri. Sınırlayıcıları belirtebilmeli ve açık ve okunmamış olarak seçebilmelisiniz. –

cevap

2

Birden arama seçeneklerini kullanmak için lambda'da constraints kullanabilirsiniz: Sen daha karmaşık yollar için farklı bir lambda yapabilir

search_options = %w(country state loc) 
    get('search/*path',:to => 'people#search', constraints: lambda do |request| 
      extra_params = request.params[:path].split('/').each_slice(2).to_h 
      request.params.merge! extra_params # if you want to add search options to params, you can also merge it with search hash 
      (extra_params.keys - search_options).empty? 
      end) 

+1

Teşekkürler, bu sorunun iyi/uygun bir çözümü gibi görünüyor. Günün sonunda, söylediğin gibi karmaşık bir lambda regex aşağı iner varsayalım, umarım onlar da Rails 5 kolayca çoklu isteğe bağlı parametre desteği ekleyeceğiz! –