2011-10-01 18 views
5

Estoy seguro de que es un problema debido simplemente a mí no entender completamente cómo los bits encajan en los carriles ...rieles Geocoder - Aprendiendo

He seguido el rails cast pero estoy teniendo problemas para su aplicación en mi aplicación (la he tenido trabajando de manera independiente).

El error que consigo es

método no definido `Nearbys'

Esto es lo que tengo: user.rb

geocoded_by :full_address 
    after_validation :geocode 

    def full_address 
    [address1, address2, address3, city, country, postcode].compact.join(', ') 
    end 

users_controller.rb

def index 
    @title = "All users" 

    if params[:search].present? 
     @users = User.near(params[:search], 50, :order => :distance) 
    else 
     @users = User.all 
    end 
end 

index.html.erb

<h3>Nearby locations</h3> 
<ul> 
<% for user in @users.nearbys(10) %> 
    <li><%= link_to user.address1, user %> (<%= user.distance.round(2) %> miles)</li> 
<% end %> 
</ul> 

_sidebar.html.erb

  <%= form_tag users_path, :method => :get do %> 
       <p> 
       <%= text_field_tag :search, params[:search] %> 
       <%= submit_tag "Search Near", :name => nil %> 
       </p> 
      <% end %> 

Gracias

Si comento hacia fuera los .nearbys

<% for user in @users#.nearbys(10) %> 
    <li><%= link_to user.latitude, user %> (<%= user.distance.round(2) %> miles)</li> 
<% end %> 

La búsqueda de obras. ¿Podría ser un problema con la instalación del geocodificador?

Respuesta

4

La función nearbys es una función de su modelo, no de una colección de modelos. La variable @users contiene una colección de modelos User. Debe llamar a la función en una única instancia de modelo, por ejemplo para cada usuario en @users.

A modo de ejemplo, pero no está seguro de si realmente quiere esto:

<% @users.each do |user| %> 
    <% user.nearbys(10).each do |near_user| %> 
    <li><%= link_to near_user.latitude, near_user %> (<%= near_user.distance.round(2) %> miles)</li> 
    <% end %> 
<% end %> 

(. Tenga en cuenta que también he cambiado el for user in @users utilizar @users.each do |user|, que es más "Rubyish")

+0

Ahh , eso tiene sentido ahora! Gracias por su ayuda. – Chris

+0

Entiendo que esta es una respuesta anterior, pero gracias por ello y la he usado en mi aplicación en la página de visualización del usuario, es decir, cuando el perfil de usuario visita a alguien, muestra a los usuarios cercanos antes del perfil, AHORA. ..cómo puedo modificarlo para que el usuario actualmente visto no sea parte de esa lista. Gracias de antemano. – Xander