刚刚开始使用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])。您可能需要防止数组为空(假设空列表是件坏事)。