2011-10-01 23 views
5

tôi chắc chắn rằng nó chỉ đơn giản là một hành do tôi không hoàn toàn hiểu được cách bit phù hợp với nhau trong Rails ...Rails Geocoder - Vẫn học

Tôi đã theo rails cast nhưng tôi đang gặp rắc rối thực hiện nó vào ứng dụng của tôi (Tôi đã có nó hoạt động độc lập).

Các lỗi tôi nhận được là

không xác định phương pháp 'nearbys'

Dưới đây là những gì tôi đã có: 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 %> 

Cảm ơn

Nếu tôi nhận xét ra .nearbys

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

Các tìm kiếm hoạt động. Đây có phải là vấn đề với việc cài đặt bộ mã hóa địa lý không?

Trả lời

4

Chức năng nearbys là một chức năng trên mô hình của bạn, không phải trên một tập hợp các mô hình. Biến số @users chứa một bộ sưu tập của User mô hình. Bạn cần phải gọi hàm trên một cá thể mô hình đơn, ví dụ cho mỗi người dùng trong @users.

Như một ví dụ, nhưng không chắc chắn nếu bạn thực sự muốn điều này:

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

(. Lưu ý rằng tôi cũng đã thay đổi for user in @users sử dụng @users.each do |user|, mà là nhiều hơn "Rubyish")

+0

Ahh , điều đó có ý nghĩa ngay bây giờ! Cảm ơn sự giúp đỡ của bạn – Chris

+0

Tôi hiểu rằng đây là câu trả lời cũ - nhưng cảm ơn bạn vì điều đó và tôi đã sử dụng nó trong ứng dụng của tôi trong trang hiển thị của người dùng - tức là khi ai đó truy cập tiểu sử của người dùng, nó hiển thị người dùng lân cận trước hồ sơ, NGAY BÂY GIỜ. .. làm thế nào tôi có thể sửa đổi nó để người dùng hiện đang xem không phải là một phần của danh sách đó. Cảm ơn bạn trước. – Xander

Các vấn đề liên quan