如何使用子记录参数检索父记录

时间:2014-12-08 20:29:58

标签: ruby-on-rails ruby-on-rails-4 activerecord active-record-query

我有办公室&位置模型。与has_one关系

我正在尝试使用搜索功能,用户尝试根据邮政编码查看所有办公室

在办公室控制器中我放置了这样的东西:

 def index
    if params[:search]  
      @offices = Office.find_each do |office|
        return office if office.location.zip == params[:search]
      end
    else
      @offices = Office.all
    end

  end

但是当我提交zip值时,我在视图中出现了nil错误。

office.rb

class Office < ActiveRecord::Base
  has_one :location
end

location.rb

class Location < ActiveRecord::Base
  belongs_to :office
end

1 个答案:

答案 0 :(得分:0)

我不认为你的find_each块中的return语句正在按照你的意图行事。

尝试将控制器代码更改为:

def index
  if params[:search]  
    @offices = []
    Office.find_each do |office|
      @offices << office if office.location.zip == params[:search]
    end
  else
    @offices = Office.all
  end
end