【问题标题】:Undefined method order_by for Sunspot太阳黑子的未定义方法 order_by
【发布时间】:2014-04-29 06:33:44
【问题描述】:

我收到错误:“undefined method 'order_by'”,但我认为 order_by 方法是为 Sunspot 内置的,有人可以解释我收到此错误的原因以及如何解决它吗?

我的模型中的可搜索块:

searchable do
  text :title, :street_address, :apartment_number, :city, :state, :zip

  float :price
  float :bathrooms
  float :bedrooms
  float :average_overall_rating
end

我的搜索控制器方法:

def search
  @search = Apartment.search do |query|
    fulltext params[:search]
    order_by(:average_overall_rating, :asc)
    with_price(query)

【问题讨论】:

    标签: ruby-on-rails sunspot sunspot-rails sunspot-solr


    【解决方案1】:

    您只能访问 Sunspot 搜索 DSL 中的 order_by 方法。请改为在您的控制器中执行此操作:

    def search
      @results = Sunspot.search(YourModel) do
        fulltext(params[:search])
        order_by(:average_overall_rating, :asc)
      end
    end
    

    【讨论】:

      【解决方案2】:

      fulltextorder_by 方法必须在模型的 search 块中使用。它应该是这样的:

      def search
        @models = Model.search do   # Replace 'Model' by your model class
          fulltext params[:search]
          order_by(:average_overall_rating, :asc)
        end
      end
      

      【讨论】:

        【解决方案3】:

        嘿,我居然凭直觉找到了解决办法:

        我只需要调用 query.order_by(:average_overall_rating, :asc)!

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2023-03-21
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多