Ransack搜索不在rails模型中工作,但在rails控制台中工作正常

时间:2017-07-28 19:31:39

标签: ruby-on-rails ransack

我遇到了Ransack的问题。这是我的搜索表单

= search_form_for @query, :url => search_products_path, :html => { :method => :get } do |f|
    %dl.left
      %dl.left
        %dt= f.label :sku, t('shoppe.orders.sku')
        %dd= f.text_field :with_sku
      %dl.right
        %dt= f.label :name, t('shoppe.products.name')
        %dd= f.text_field :with_translated_name

我的搜索模型代码是

def self.with_sku(sku_string)
      sku_string = sku_string.squish
      where("LOWER(shoppe_products.sku) LIKE ?" , "%#{sku_string}%".downcase)
end

因此。问题是当输入数字字段并转换为字符串时,SKU搜索不起作用,但在rails控制台中完成此操作时,它正常工作。任何帮助都会被爱:)

2 个答案:

答案 0 :(得分:1)

我可能错了,但我认为squish是一种字符串方法。尝试在整数上调用它时出错:

NoMethodError: undefined method `squish' for 245:Integer

为了安全起见,首先将搜索值显式地转换为String,然后它应该起作用:

str = str.to_s.squish

答案 1 :(得分:0)

我的一些协会实际上是一个问题。我更新了它们,一切正常。