Collection_select всегда имеет только 1 элемент, а не массив? В рубине на рельсах - PullRequest
0 голосов
/ 09 ноября 2011

Я внедряю в Ruby on Rails и пытаюсь работать с collection_select, я новичок. Я просто хочу сделать, у меня есть список с группами и список с ролями. Это обе модели. Итак, я перечисляю свои группы, и рядом с этим у меня есть выпадающий список с ролью для группы. каждая группа имеет 1 роль. Я уже реализовал некоторый код, но collection_select всегда запоминает только последний элемент. Поэтому я хочу список групп, связанных с желаемой ролью. Но теперь у меня есть только 1 предмет. Это мой взгляд:

<% @groups.each do |group| %>
      <li>      
       <%= collection_select('group', 'role_id', @roles, 'id', 'name') %>
      </li>
<% end %>

Я не знаю, что теперь делать? Кто-то, кто знает, что я делаю не так?

Спасибо

1 Ответ

0 голосов
/ 09 ноября 2011

Итак, я предполагаю, что вы делаете форму? К какой модели относится форма?

Чтобы помочь отладить подобные вещи, обычно было бы неплохо проверить ваш файл development.log, чтобы увидеть, какие параметры форма передает контроллеру. Что-то вроде:

Parameters: {"commit"=>"Save", "action"=>"update", "_method"=>"put", 
    "id"=>"6168", "group"=>{"role_id"=>"2", ...}, "controller"=>"groups"}

Теперь обычно контроллер Rails ожидает форму с данными для одной модели. Если вы хотите обновить несколько моделей или рядов одновременно, вам нужно проявить творческий подход.

Первое, что нужно сделать, это попытаться вернуть массив групп. Ваша форма на данный момент не использует массив. Я сомневаюсь, что эти помощники Rails помогут вам, хотя. Такие помощники предназначены для одновременного обновления одного объекта ActiveRecord.

Возможно, вам может понадобиться переосмыслить дизайн вашего приложения, чтобы он лучше подходил для Rails, или прокрутить собственную форму и выполнить итерацию по массиву, через который оно проходит. Делать это Rails - это рекомендуемый вариант, вам может потребоваться изгиб мозга с вашей стороны, чтобы понять эту часть. Если вам нужна помощь, возможно, предоставьте больше информации о том, чего вы на самом деле пытаетесь достичь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...