неопределенный метод `name 'для [" Team Team Meeting ", 25]: Array Rails options_for_select - PullRequest
0 голосов
/ 17 января 2020

Я работаю над приложением рельсов 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

Пожалуйста, помогите мне

Обратите внимание: я не в контроллере проектов

Ответы [ 3 ]

0 голосов
/ 17 января 2020

Вы можете использовать <%= f.options_for_select(@projects, object.id) %>. object_id автоматически заполнит выпадающий список при редактировании.

0 голосов
/ 17 января 2020

ваш @projects объект имеет тип Array, поэтому он не имеет атрибутов, таких как name и id.

вы можете разместить его как <%= f.select :projects, options_for_select(@projects) %>

0 голосов
/ 17 января 2020

Поскольку у вас уже есть массив пар, вы можете просто передать его прямо в 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) %>
...