Rails частичная коллекция пуста? - PullRequest
3 голосов
/ 03 января 2012

Я пытаюсь выяснить это уже около часа.У меня есть частичная коллекция, которая действительно заполнена объектами модели-члена, и когда я пытаюсь отобразить ее с помощью коллекции:

<%= render :partial => 'list', :collection => @members %>

В моем _list.html.erb атрибуты @member_id и @member_email пустыпредоставленный html:

<%= check_box_tag('selected_member[]', @member_id, false) %>
<%= @member_email %>

Представление отображается правильно, и я получаю 3 элемента участника, но с пустым идентификатором и адресом электронной почты.

Что я делаю неправильно?Если я пытаюсь получить доступ к частичному члену, используя "member_id" или "member.id", я получаю "неопределенную локальную переменную или метод" member "", поэтому ясно, что это неправильная запись.

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

Заранее спасибо.

1 Ответ

4 голосов
/ 03 января 2012

Когда вы делаете:

<%= render :partial => 'list', :collection => @members %>

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

Таким образом, вместо member по умолчанию это будет list, например:

<%= check_box_tag('selected_member[]', list.id, false) %>
<%= list.email %>

Если вы хотите, чтобы вместо локальной переменной было указано имя member, вам следует либо переименовать частичный файл, либо использовать следующий синтаксис:

<%= render :partial => 'list', :collection => @members, :as => :member %>

Подробнее здесь (п. 3.4.5): http://guides.rubyonrails.org/layouts_and_rendering.html

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