Ruby on rails 如何显示集合(表单中的选择)中的资源名称列表

Ruby on rails 如何显示集合(表单中的选择)中的资源名称列表,ruby-on-rails,Ruby On Rails,我有一个名为Product\u Categories的表: :string :name :string :icon 我在表格中有一个选择,我想显示产品类别的名称: <%= builder.select :name, collection: @product_categories.each {|product_category| product_category.name} %> 它不显示名称,而是在“选择”下拉列表中显示整个对象 如何迭代@product_类别以显示名称 谢谢 尝

我有一个名为
Product\u Categories
的表:

:string :name
:string :icon
我在表格中有一个选择,我想显示产品类别的名称:

<%= builder.select :name, collection: @product_categories.each {|product_category| product_category.name} %>
它不显示名称,而是在“选择”下拉列表中显示整个对象

如何迭代@product_类别以显示名称


谢谢

尝试此操作,您可以传递控制器操作
id
以在您的业务逻辑中使用它,并且
name
将显示给用户

<%= builder.select :name, collection: @product_categories.collect {|p| [ p.name, p.id ] } %>

改用
map

如果要显示
名称
并使用
名称
作为值

<%= builder.select :name, collection: @product_categories.map {|product_category| product_category.name} %>

类似的方法应该更高效、更简单,不需要构建数组,然后在数组上使用
#each
来构建选项,这样就可以直接在集合上创建each

builder.collection_select :name, @product_categories, :id, :name
<%= builder.select :name, collection: @product_categories.map {|product_category| product_category.name} %>
<%= builder.select :name, collection: @product_categories.map {|product_category| [product_category.name, product_category.id]} %>
builder.collection_select :name, @product_categories, :id, :name