在我拥有的视图中,我使用 fields_for 显示关系表的表单数据。但是,此表单的一部分将具有可供选择的选择列表。我看到 form_for 和 fields_for 助手的 label、text_field、text_area 助手将填充已经填充的模型对象所需的信息......但是选择列表助手会做同样的事情呢?
当我有一对多关系时,这将特别有用,因为 fields_for 遍历模型对象中已经存在的每个项目并使用索引显示它。
这样的事情存在吗?
在我拥有的视图中,我使用 fields_for 显示关系表的表单数据。但是,此表单的一部分将具有可供选择的选择列表。我看到 form_for 和 fields_for 助手的 label、text_field、text_area 助手将填充已经填充的模型对象所需的信息......但是选择列表助手会做同样的事情呢?
当我有一对多关系时,这将特别有用,因为 fields_for 遍历模型对象中已经存在的每个项目并使用索引显示它。
这样的事情存在吗?
您可以使用几种选择辅助方法。最常见的是collection_select。如果您belongs_to
在模型上有关联并且您想使用选择菜单来设置它,这将非常有用。
<%= f.collection_select :category_id, Category.all, :id, :name %>
对于其他情况,有更通用的选择方法。在这里,您可以提供一系列您想要提供的选项。
<%= f.select :priority, [["Low", 1], ["Medium", 2], ["High", 3]] %>
每个数组元素中的第一个值是选择选项的名称,第二个是分配给属性的值。
还有许多其他选择菜单(用于日期和时间),但以上两个应该涵盖大多数情况。这些方法都适用于form_for
或fields_for
。
您正在寻找select或collection_select。两者都可以在 form_for 或 fields_for 块中使用。文档中有关于如何在 form_for 中使用它们的示例