Ruby on rails Rails中的模型关联问题

Ruby on rails Rails中的模型关联问题,ruby-on-rails,ruby-on-rails-3.1,nested-attributes,rails-geocoder,Ruby On Rails,Ruby On Rails 3.1,Nested Attributes,Rails Geocoder,希望这会很简单。但我已经找了几个小时了,似乎没法让它发挥作用。我有多个地址的用户,我试图使用Geocoder gem通过邮政编码搜索显示这些用户,我的代码与Geocoder Railscast中的代码非常相似 这是我的控制器尝试1,返回“未定义的方法`Addresses'” 这是第2次尝试,返回“未初始化的常量ProfilesController::Addresses”(我不知道Profile.where位是否有效,但它甚至没有到达该部分…) class ProfilesController:d

希望这会很简单。但我已经找了几个小时了,似乎没法让它发挥作用。我有多个地址的用户,我试图使用Geocoder gem通过邮政编码搜索显示这些用户,我的代码与Geocoder Railscast中的代码非常相似

这是我的控制器尝试1,返回“未定义的方法`Addresses'”

这是第2次尝试,返回“未初始化的常量ProfilesController::Addresses”(我不知道Profile.where位是否有效,但它甚至没有到达该部分…)

class ProfilesController:distance)
@profiles=Profile.where(:id=>addresses.id)
@title=“附近的治疗师”+:搜索
其他的
@profiles=Profile.all
@title=“所有人”
结束
结束
以下是我的模型:

class Profile < ActiveRecord::Base
  has_many :addresses, :dependent => :destroy
  accepts_nested_attributes_for :addresses, :reject_if => lambda { |a| a[:street].blank? }, :allow_destroy => true

class Address < ActiveRecord::Base
  belongs_to :profile
  geocoded_by :street
  after_validation :geocode, :if => :street_changed?
类配置文件:销毁
接受:addresses、:reject_if=>lambda{a | a[:street].blank?}、:allow_destroy=>true的_嵌套_属性
类地址:street\u是否更改?

非常感谢您的关注

对于2号,您必须从
地址更改。near(params[:search],25,:order=>:distance)
地址。near(params[:search],25,:order=>:distance)
对于2号,您必须从
地址更改。near(params[:search],25,:order=>:distance)
地址。near(params[:search],25,:order=>:distance)

另外,您可以更改以下内容以获取所有配置文件:

addresses = Address.near(params[:search], 25, :order => :distance)

@profiles = addresses.map{ |ad| ad.profile }.uniq unless addresses.nil?

如果有匹配的地址,则从每个地址查找配置文件。

另外,您可以更改为以下内容以获取所有配置文件:

addresses = Address.near(params[:search], 25, :order => :distance)

@profiles = addresses.map{ |ad| ad.profile }.uniq unless addresses.nil?

如果有匹配的地址,则从每个地址查找配置文件。

我发现我无法用接受的答案分页。所以我变得很脏:

addresses = Address.near(params[:search], 25, :order => :distance)
locations_id_array = []  
addresses.each do |address| 
  addresses_id_array << address.id
end  
@profiles  = Profile.where(:address_id => addresses_id_array).paginate(:page => params[:page],  :per_page => 5).order('name DESC')
addresses=Address.near(参数[:search],25,:order=>:distance)
位置\u id\u数组=[]
地址
地址\u id\u数组地址\u id\u数组)。分页(:page=>params[:page],:per\u page=>5)。顺序('name DESC')

如果有人有更好的、可伸缩的方法来做这件事(最好是使用示波器),我很想听听。

我发现我无法对公认的答案进行分页。所以我变得很脏:

addresses = Address.near(params[:search], 25, :order => :distance)
locations_id_array = []  
addresses.each do |address| 
  addresses_id_array << address.id
end  
@profiles  = Profile.where(:address_id => addresses_id_array).paginate(:page => params[:page],  :per_page => 5).order('name DESC')
addresses=Address.near(参数[:search],25,:order=>:distance)
位置\u id\u数组=[]
地址
地址\u id\u数组地址\u id\u数组)。分页(:page=>params[:page],:per\u page=>5)。顺序('name DESC')

如果有人有更好的、可伸缩的方法(最好是使用示波器),我很乐意听到。

这几乎是完美的。不得不切换空白?到.nil?你得到了一个无法分页的数组。这个工作几乎完美。不得不切换空白?到.nil?返回一个无法分页的数组