2012-02-28 3 views
0

у меня есть приложение рельсы, что я пытаюсь сделать запрос GET с координатами в ... У меня есть маршрут в моем routes.rb так:Экранирование элементов в URI Ruby On Rails

map.connect 'feeds/get/:location', :controller => "feeds", :action => "get" 

Я могу послать строку, состоящую из буквенно-цифровых символов, тонких, но мне нужно отправить координаты в строке в URI как запрос GET:

51.896834,0.878906. 

таким образом, я избежала строки, как это так, и добавьте его в мой URI.

http://thisisnottheurl.net/feeds/get/51%2E896834%2C0%2E878906.xml 

однако это выглядит как рельсы автоматически декодирует строку перед контроллером и дает мне эту ошибку маршрутизации в журнале: (? С маршрутами)

ActionController::RoutingError (No route matches "/feeds/get/51.896834,0.878906.xml" with {:method=>:get}): 

Как прекратить рельсы, вылетающие эту строку так что его можно прочитать в контроллере?

Я посмотрел на использование функции соответствия в routes.rb с регулярным выражением, но это рельсы 3 только ...

+0

Те, которые должны быть отправлены как параметры, а не просто добавлены к URI. Затем вы можете получить их из своего контроллера в хеше params (например, 'params [: longitude]'). –

+0

Извините, я отправляю их как параметры с этим путем ... 'map.connect 'feeds/get /: location',: controller =>" feeds ",: action =>" get "' – jhgfds

+0

Можете ли вы показать где вы пытаетесь отправить координаты? – TheDelChop

ответ

0

Единственный реальный способ, которым я могу думать, делать это будет выглядеть следующим образом, присвоить маршруту имя следующим образом:

map.connect 'feeds/get', :controller => "feeds", :action => "get", as: 'get_feeds' 

Тогда вы бы именем помощника маршрут get_feeds_path, который вы могли бы пройти в месте и формат следующим образом:

get_feeds_path(:location => '51.896834,0.878906', :format => 'xml') 

что МИГ ht - еще лучшая идея, однако, если вы прошли в двух параметрах, по одному для каждой из координат.

get_feeds_path(:x_location => '51.896834', :y_location => '0.878906', :format => 'xml') 

Затем PARAMS хэш передается в контроллер должен иметь params[:x_location] и params[:y_location], которые вы можете манипулировать по своему вкусу.