Ruby on rails 尝试在Rails中使用表单将id映射到名称
我正在我的应用程序中使用搜索宝石搜索功能。在我的表单中,我似乎所有的东西都在工作,但是我只能让表单显示a)id或b)对象本身。我似乎无法将它正确地映射到数据的名称,而不是它的id 有什么想法吗 表格编号:Ruby on rails 尝试在Rails中使用表单将id映射到名称,ruby-on-rails,ransack,Ruby On Rails,Ransack,我正在我的应用程序中使用搜索宝石搜索功能。在我的表单中,我似乎所有的东西都在工作,但是我只能让表单显示a)id或b)对象本身。我似乎无法将它正确地映射到数据的名称,而不是它的id 有什么想法吗 表格编号: <!-- office type --> <%= f.collection_select :office_type_id_gteq, Desk.all, :id, :office_type_id, include_blank: "Office type", class: "f
<!-- office type -->
<%= f.collection_select :office_type_id_gteq, Desk.all, :id, :office_type_id, include_blank: "Office type", class: "form-control" %>
因此,就目前情况而言,我可以在表格的下拉列表中看到我的收藏中显示的office_type_id。我可以将其更改为office\u类型,但这会引入对象本身,而不是名为office\u类型的字符串值
正在尝试将office类型id映射到office类型字符串,但似乎无法正常工作。我知道这张桌子。所有这些都可以添加到控制器的一个变量中。为了方便,我直接把它做成表格,看看是否可以开始工作
再次感谢
这将告诉您如何使用collection_select。但首先,我认为你构建的模型是错误的。如果一个办公室类型有许多桌子,那么它就不能有桌子ID,因为这将把它链接到一个桌子上。您需要删除此列,因为关系是通过办公桌的office type ID建立的
如果我理解正确,那么您想要的是:
<%= f.collection_select :office_type_id, OfficeType.all, :id, :office_type, include_blank: false, class: "form-control" %>
这将为属性“office\u type\u id”创建一个下拉菜单,将所有的office类型作为选项,在选中时发送它们的id,并使用它们的office type属性来决定在下拉菜单上显示什么。Hi@Mark,非常感谢您清除了这一点。因为我的模型用下划线命名,所以我正在尝试打电话给办公室类型。所有,并得到一个错误。不敢相信我没有注意到这一点。在关系方面,嗯,他们总是让我困惑。我想这里发生的事情是,我从另一种方式开始与关系,然后将其向下修正。现在不删除ID列,它确实起作用,但我会更仔细地研究这一点事情。再次感谢您的建议和快速响应。传奇!容易犯错误,乐于帮助:)
create_table "desks", force: :cascade do |t|
t.string "listing_name"
t.integer "min_days"
t.integer "max_days"
t.text "description"
t.string "location"
t.integer "accommodate"
t.integer "user_id"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.integer "daily_rate"
t.integer "office_type_id"
t.integer "desk_type_id"
t.string "amenity_ids", default: "--- []\n"
t.float "latitude"
t.float "longitude"
t.boolean "active"
end
create_table "office_types", force: :cascade do |t|
t.string "office_type"
t.integer "desk_id"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
end
<%= f.collection_select :office_type_id, OfficeType.all, :id, :office_type, include_blank: false, class: "form-control" %>