Вопрос функционального тестирования рельсов

Когда я делаю

get :inside, :format => :xml, :lat2 => "41", :lng2 => "-73.9", :lat1 => "40", :lng1 => "-74", :category => "girl", :order => "date"

с моими маршрутами.rb включает в себя:

get 'images/inside/:lat1/:lng1/:lat2/:lng2/:order/:category', :to => "images#inside"

я получил

ActionController::RoutingError: No route matches {:lng1=>"-74", :category=>"girl", :lat2=>"41", :format=>:xml, :lng2=>"-73.9", :order=>"date", :lat1=>"40", :action=>"inside", :controller=>"images"}

Но, когда я делаю

get :inside, :format => :xml, :lat2 => "41", :lng2 => "-73", :lat1 => "40", :lng1 => "-74", :category => "girl", :order => "date"

оно работает!

Разница лишь в десятичном значении lng2.

Обратите внимание, что если в файле rout.rb нет параметров, он работает, но мне нужны

2 ответа

Решение

Насколько я могу судить, это потому, что у вашей ценности есть точка. По умолчанию маршруты Rails (по крайней мере, Rails3) не могут содержать точки. Чтобы обойти это, см. http://avdi.org/devblog/2010/06/18/rails-3-resource-routes-with-dots-or-how-to-make-a-ruby-developer-go-a-little-bit-insane/ с ума /

Могу поспорить, что десятичная точка заставляет Rails думать, что задан формат (например,.xml или.js).

Вы можете обойти это с помощью регулярных выражений, что-то вроде того, что описано здесь: http://zargony.com/2009/05/05/routing-parameters-with-a-dot

Другие вопросы по тегам