刚开始使用Ruby on Rails编写代码,并设法为我的应用程序创建基本的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 ??
或者它是解决我问题的更好方法吗?
答案 0 :(得分:0)
查看使用一系列选项创建表单(例如here)。这样您就可以获得特定类型手榴弹的多个值。
您的作用域可以使用单个id 或一组id,并且使用选项数组方法应该生成一个可以工作的数组。在上面的例子中,它实际上是Nade.by_grenade([1,4])。您可能希望防止数组为空(假设空列表是一件坏事)。