Rails搜索结果重复(Railscast#111)

时间:2016-03-08 02:31:18

标签: ruby-on-rails

我在进行搜索时得到了一个奇怪的结果我已经从Railscast#111(高级搜索)中获得了赞誉。

搜索结果从我拥有的条目中通过OK,但是当结果大于1时(仅仅测试了两个结果) - 它会使结果加倍。因此,当我期待两个结果时,我得到4(在表格中呈现)。

奇怪的是,当我期待1个结果时,它只会渲染1个结果。

我觉得这与我的“Search.rb”有关。提供搜索参数的文件。其他人可以解释为什么会产生重复的结果吗?

class Search < ActiveRecord::Base
  def entries
    @entries ||= find_entries
  end

private

  def find_entries
    entries = Entry.order(:firstname)
    entries = entries.where("firstname like ?", "%#{firstname}%") if firstname.present?
    entries = entries.where("lastname like ?", "%#{lastname}%") if lastname.present?
    entries
  end
end

我按名字或姓氏搜索,但条目中包含更多字段。

1 个答案:

答案 0 :(得分:0)

尝试

def find_entries
    entries = Entry.order(:firstname)
    if !firstname.blank?
        entries = entries.where("firstname like ?", "%#{firstname}%")
        if !lastname.blank?
            entries = entries.where("lastname like ?", "%#{lastname}%")
        end
    else
        if !lastname.blank?
            entries = entries.where("lastname like ?", "%#{lastname}%")
        end
    end
    entries
end