Rails 4 / Filterrific gem-布尔字段问题

时间:2018-09-01 00:32:50

标签: ruby-on-rails-4 checkbox filterrific

在我的应用程序中,我有一个名为tested的字段,它是一个boolean字段。

我想要实现的是一个简单的checkbox,用户可以在其中基于tested选中或取消选中并过滤。

在我的模型中,我有:

filterrific :default_filter_params => { :sorted_by => 'created_at_desc' },
              :available_filters => %w[
                sorted_by
                search_query
                with_created_at_gte
                with_tested
              ]
scope :with_tested, lambda { |flag|
    return nil  if 0 == flag # checkbox unchecked
    where(tested: true)
}

/// Other scopes

在我的视图/表单中,我有:

= f.check_box :with_tested

在我的模型中,我也尝试过其他没有运气的方法:

scope :with_tested, lambda { |value|
  where('posts.tested = ?', value)
}

// and 

scope :with_tested, lambda { |query|
  return nil  if 0 == query # checkbox unchecked
  where('posts.tested == ?', query)
}

// and

scope :with_tested, lambda { |flag|
    return nil  if 0 == flag # checkbox unchecked
    where(tested: [flag])
}

当我尝试基于tested进行过滤时,可以看到我的过滤器正在尝试过滤(我看到过滤器旋转),但是我的记录未正确过滤。< / p>

我不确定我做错了什么。任何建议和帮助,表示赞赏!

过滤器的所有其他部分都可以正常工作

PS:我没有在控制器中添加with_tested,因为我知道我不需要它


版本:

Ruby on Rails:4.2.4

极好:2.1.2

1 个答案:

答案 0 :(得分:0)

问题是import numpy as np df = np.ndarray((2000,10)) x, y = df[:, 2:9], df[:, 9] x.shape, y.shape # << what you should give to `clf.fit` # ((2000, 7), (2000, )) x.reshape(-1, 1).shape, y.shape # << what you ARE giving to `clf.fit`, # ((14000, 1), (2000,)) # << which is causing the problem ,因为尚未对其进行设置where(tested: [flag])true。要解决此问题,false应该知道在这种情况下where的情况。

因此,value应该更改为:where(tested: [flag])where(tested: true)

首先,您需要在where(tested: false)中进行指定:

model

在您的scope :with_tested, lambda { |flag| return nil if 0 == flag # checkbox unchecked where(tested: true) } 中执行以下操作:

view

并在= f.check_box :with_tested 的控制器中添加:with_tested

PS:代码已经过测试并且可以正常工作