当我这样做时
get :inside, :format => :xml, :lat2 => "41", :lng2 => "-73.9", :lat1 => "40", :lng1 => "-74", :category => "girl", :order => "date"
使用我的routes.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的十进制值。
请注意,如果routes.rb没有params,它可以工作,但我需要那些
答案 0 :(得分:0)
我敢打赌小数点让Rails认为指定了一种格式(例如.xml或.js)。
你可以使用正则表达式解决它,就像这里描述的那样:http://zargony.com/2009/05/05/routing-parameters-with-a-dot
答案 1 :(得分:0)
据我所知,这是因为你的价值有一段时间。默认情况下,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/