使用datagrid gem接受过滤器的多个值

时间:2012-12-07 20:02:41

标签: ruby-on-rails ruby ruby-on-rails-3 datagrid gem

有人可以发布正确的语法,在数据网格中设置filter()以使用多个值,包括column()设置吗?

我的用例是我想按距离某个原点进行过滤。我能够通过原点进行过滤,但我必须在远处进行硬编码。我希望能够将“纽约,纽约”和“25”传递给过滤器,以便在距离纽约州纽约25英里的范围内提供所有结果。

您不必显示如何成功获取传递到代码块的两个变量的实际逻辑。

谢谢!

2 个答案:

答案 0 :(得分:0)

这有效

filter(:user_location, :string, :header => "Location", :multiple=>true) do |value|

origin = value[0]
distance = value[1]

end

以这种方式设置过滤器时,会生成表单字段,[]会自动填充它。为了传递多个值,您似乎需要在括号内输入它们,用逗号分隔。即["New York, NY", "25"]。这真的需要更好地解决。提交表单时,会执行过滤,但随后会使用["[\"New York, NY\", \"25\"]"]填充该字段。

答案 1 :(得分:0)

我会建议略有不同的东西。无需将两个内容连接成一个:

filter(:user_location, :string, header: 'Location') do |value, model, grid|
  origin = value
  distance = grid.radius
  ...
end

filter(:radium, :enum, select: [5,10,15,20,25], dummy: true) 
  # can be integer instead of enum