我正在研究rails 5应用程序。我需要显示项目的下拉列表。
我在控制器上有@projects,其值为[["Company Team Meeting", 25], ["BuildEffective", 1], ["VCF ", 86], ["StomerijCollectief", 114], ["StomerijCollectief - Enhancement", 130], ["Stomerij Mobile App", 135], ["Blog Writing", 138], ["Stomerij Design Enhancements", 139]]
在视图侧,我使用以下代码
<%= f.options_for_select(@projects.map {|p| [p.name, p.id]})%>
这给了我以下错误
undefined method `name' for ["Company Team Meeting", 25]:Array
请帮助我
请注意:我不在项目控制器中
您可以使用<%= f.options_for_select(@projects, object.id) %>
. object_id将在编辑时自动填充下拉列表。
由于您已经有一个对数组,因此您可以将其直接传递给options_for_select
:
<%= options_for_select(@projects) %>
但是,如果您有一个记录集合(而不是两个摘取的列或此数据来自何处(,则可以使用collection_select
帮助程序,而不是手动构建选项标记并选择标记。
<%= f.collection_select(:project_id, Project.all, :id, :name) %>
# or
<%= f.collection_select(:project_ids, Project.all, :id, :name, multiple: true) %>
您的@projects
对象是数组类型,因此它没有名称和 id 等属性。
你可以像<%= f.select :projects, options_for_select(@projects) %>
一样放置它