Это неправильно / невозможно передать число с плавающей точкой в качестве идентификатора в RAILS 2.x
http://mysite.com/clientversioncheck/1.1
контроллер:
def clientversioncheck
current_version = 1.1
client_version = params[:id].to_f
if client_version && current_version > client_version
render :text => "update url"
else
render :text => "no update " + current_version.to_s + "server vs. " + client_version.to_s, :status => 404
end
end
Если яСравнивая целое число, это всегда хорошо, но если я передаю число с плавающей запятой в виде строки, преобразование всегда отбрасывает десятичную часть.
Так что, если current_version = 1.0 и я передаю 1.0 в URL, все в порядке, если current_version =1.1 и я передаю 1.1 в URL-адресе client_version превращается в 1.0.
Я думал.не нужно экранировать в URI
Если я все сводю к следующему:
def clientversioncheck
render :text => params[:id]
end
Я получаю усечение еще
Например: clientversioncheck / 2.33 выведет2
Я пробовал следующие маршруты:
map.resources :api, :id => /[A-Za-z0-9\.]+?/, :format => /json|xml|plist|html/
map.resources :api, :requirements => { :resource => /.*/ }