正在为rails中的活动记录创建筛选器



刚刚开始使用RubyonRails进行编码,并已成功为我的应用程序创建了基本的CRUD功能。

我也可以把它们全部列出来。现在我想创建一个过滤器供用户交互。

Database Schema
create_table "nades", force: :cascade do |t|
   t.string   "title"
   t.integer   "grenade"
   t.text     "description"
   t.datetime "created_at"
   t.datetime "updated_at"
   t.integer  "map_id"
end

"手榴弹"的值可以是1-4,对应于特定的手榴弹:

[[1,"smoke"], [2,"flash"], [3,"molotov"], [4,"he-grande"]

现在我正试图在视图中创建一个包含4个按钮的过滤器。您可以在其中打开/关闭每个nade以在结果中显示或隐藏它们。

[x]Smoke [ ]Flash [ ]Moltov [x]HE

这应该只返回nades where grenade = [1,4]

经过一些阅读,它看起来像是scoped将很好地用于管理这一点。然而,我不确定如何使它按我的意愿工作。

正在考虑做一些类似的事情:

scope :by_nade, -> grenade { where(grenade: grenade) if status.grenade? }

然而,这只允许我从数据库中获得1个特定的nade类型。是否可以发送多个参数,如:

http://localhost:3000/nades/?by_nade=1,2 ??

还是它能更好地解决我的问题?

研究创建一个具有选项数组的表单(例如,此处)。这将允许您获得特定类型手榴弹的多个值。

您的作用域将使用单个id一个id数组,使用选项数组方法应该会产生一个有效的数组。在上面的例子中,它实际上是Nade.by_greade([1,4])。您可能需要防止数组为空(假设空列表是件坏事)。

最新更新