2014-01-14 3 views
0

Я пытаюсь заказать свои сообщения, насколько они близки к местоположению текущего пользователя, используя геокодер. Вот контроллер:Порядок размещения сообщений по расстоянию до города с использованием геокодера

def top 
@city = request.location.city 
@closepost = Post.near(@city, order: :distance) 
end 

и вот вид:

<% @closepost.each do |post| %> 
<%= post.title %> 
<% end %> 

Я получаю эту ошибку:

undefined method `to_f' for {:order=>:distance}:Hash 
+0

не должно быть @closepost множественном в контроллере? –

+0

Да, моя ошибка, я изменил это. Теперь получаем неопределенный метод 'to_f 'для {: order =>: distance}: Ошибка хеширования. Чувствительная строка @closepost неверна, но не знает, что ее изменить. – user2759575

+0

Спасибо, я попробую. – user2759575

ответ

1

в контроллере вы определяете:

@closepost

в то время как с точки зрения вы звоните:

@closeposts

и вы называете .each на переменную, которая не определена.

обновление

irb> a=Geokit::Geocoders::GoogleGeocoder.geocode '140 Market St, San Francisco, CA' 
irb> a.ll 
=> 37.79363,-122.396116 

@closeposts = Post.within(5, :origin => @city.ll).order('distance DESC')  

с Геокодировать

@closeposts = Post.near('dublin', 50, :order => :distance) 

Вы пропустили параметр расстояния

+0

К сожалению, плохо. Теперь я получаю этот неопределенный метод 'to_f 'для {: order =>: distance}: ошибка Hash. – user2759575

+0

где именно вы нашли этот метод '.near (@city, order:: distance)'? Я смотрел в документах и ​​не мог найти что-то для 'order'. – rmagnum2002

+0

Нашел из другого ответа stackoverflow, поэтому я даже не знаю, правильнее ли это. Я не мог найти что-либо в документах для сортировки по расстоянию от ip-адреса. – user2759575

Смежные вопросы