[ "Company Team Meeting", 25] 的未定义方法"名称":阵列导轨 options_for_select



我正在研究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) %>一样放置它

最新更新