2

index 方法中控制器中的行是:

@authors = Author.as(:a).search(params[:search]).paginate(:page => @page, :per_page => @per_page, return: :a, order: :name)

希望检索具有名称的子字符串部分的所有作者。

author模型中的搜索方式为:

  private
    def self.search(search)
      where("name =~ '.*:search.*'", search: "%#{search}%")
    end

我正在尝试使用与 ActiveModel 相同的模式,但出现错误:

名称未定义(第 1 行,第 39 列)“匹配 (result_author:) AuthorWHERE (name =~ '. :search. ') AND (result_author.search = {result_author_search}) WITH result_author as result_author 返回计数(result_author)

不知道如何正确地写这个。

4

1 回答 1

3

这种形式where不起作用(尽管我们一直在讨论实现它)。你应该这样做:

def self.search(node_var, search)
  all.where("#{node_var}.name =~ {search}").params(search: ".*#{search}.*")
end


@authors = Author.as(:a).search(:a, params[:search]).paginate(:page => @page, :per_page => @per_page, return: :a, order: :name)

all在类方法中也很重要,它允许您制作这样的链

于 2015-02-16T12:30:29.420 回答