2011-10-01 11 views
5

Sono sicuro che è un semplicemente emettere a causa di me non pienamente capire come i bit si incastrano in Rails ...Rails Geocoder - studente

ho seguito il rails cast ma sto avendo problemi di attuazione in la mia app (l'ho fatta funzionare autonomamente).

L'errore che ottengo è

indefiniti metodo `Nearbys'

Ecco quello che ho: 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 %> 

Grazie

Se io commento le .nearbys

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

La ricerca funziona. Questo potrebbe essere un problema con l'installazione di geocoder?

risposta

4

La funzione nearbys è una funzione sul modello, non su una raccolta di modelli. La variabile @users contiene una raccolta di modelli User. È necessario chiamare la funzione su una singola istanza di modello, ad esempio per ogni utente in @users.

Per fare un esempio, ma non è sicuro se si vuole veramente questo:

<% @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 %> 

(. Si noti che ho anche cambiato il for user in @users utilizzare @users.each do |user|, che è più "Rubyish")

+0

Ahh , questo ha senso ora! Grazie per il tuo aiuto – Chris

+0

Capisco che questa è una vecchia risposta - ma grazie per questo e l'ho usata nella mia app nella pagina di visualizzazione dell'utente - cioè quando qualcuno visita il profilo dell'utente, mostra gli utenti vicini prima del profilo, ORA. ..come posso modificarlo in modo che l'utente attualmente visualizzato non faccia parte di tale elenco. Grazie in anticipo. – Xander

Problemi correlati