2011-10-01 9 views
5

を学びます私のアプリ(私はそれがスタンドアロンで働いていた)。Railsのジオコーダ - それでも私は<a href="http://railscasts.com/episodes/273-geocoder" rel="noreferrer">rails cast</a>を追ってきましたが、私はトラブルにそれを実装したよ...私はそれが原因私にビットがレールに一緒に収まる方法を完全に理解するだけの問題ではないと確信しています</p> <p>を

私が手にエラーがある

未定義のメソッド `近くの空港

ここ

私が持っているものだ: 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 %> 

おかげ

私は.nearbys

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

検索作品をコメントアウトした場合。これはジオコーダーのインストールに問題がありますか?

答えて

4

関数nearbysは、モデルの関数ではなく、モデルの関数です。変数@usersには、Userモデルのコレクションが含まれています。単一のモデルインスタンス(たとえば、@users)ごとに関数を呼び出す必要があります。

例として

ではなく、必ずあなたは本当にこのしたい場合:

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

(。私ももっと "Rubyish" である@users.each do |user|を、使用するfor user in @usersを変更したことに注意してください)

+0

ああを、それは今意味がある!助けてくれてありがとう – Chris

+0

これは古い回答ですが、ありがとうと思います。ユーザーのショーページでアプリで使用しました。つまり、ユーザーのプロフィールを訪問すると、近くのユーザーがプロフィールの前に表示されます。現在表示されているユーザーがそのリストに含まれないように、変更することはできますか。 ありがとうございます。 – Xander

関連する問題

 関連する問題