fields_for вложенная форма - PullRequest
0 голосов
/ 08 июля 2010

У меня есть фотомодель и модель галереи.Модель галереи (я использовал отличные скаффолды) просто имеет одно поле, название галереи.В моей форме редактирования фотографий я хочу связать каждую фотографию с галереей, например.Я создаю 2 отдельные галереи 2009 и 2010, я хочу иметь выпадающий список на каждой странице редактирования фотографий со списком галерей, чтобы каждая фотография могла быть помещена в галерею.Я использовал это и это в качестве отправной точки, но я застрял и не могу отобразить галереи в моей форме для фотографий.

 class Gallery < ActiveRecord::Base
  has_many :photos
  attr_accessible :name
 end

class Photo < ActiveRecord::Base
  belongs_to :gallery
  accepts_nested_attributes_for :gallery, :allow_destroy => true

views / photos / _form.html.erb

<% form_for @photo, :html => { :multipart => true } do |photo_form| %>

  <p>
    <%= photo_form.label :title %><br />
    <%= photo_form.text_field :title %>
  </p>

<p>
    <% photo_form.fields_for :gallery do |gal_form| %>

        <%= gal_form.label :name %> 
        <%= gal_form.collection_select :gallery_id, Gallery.all, :id, :name %>
  </p>

      <% end %>

  <p>
    <%= submit_tag %>
  </p>

<% end %>

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

Ответы [ 3 ]

2 голосов
/ 08 июля 2010

Если ваша фотография принадлежит галерее, то не является ли gallery_id на фотографии?Таким образом, gallery_id будет членом photo_form, а не gal_form.

<%= photo_form.collection_select :gallery_id, Gallery.all, :id, :name %> 

ОБНОВЛЕНИЕ:

Вот как бы я увидел ваш взгляд:

<% form_for @photo, :html => { :multipart => true } do |photo_form| %>

  <p>
    <%= photo_form.label :title %><br />
    <%= photo_form.text_field :title %><br />
    <%= photo_form.collection_select :gallery_id, Gallery.all, :id, :name %>
  </p>
  <p>
    <%= submit_tag %>
  </p>

<% end %>

Ваша модель:

class Gallery < ActiveRecord::Base
  has_many :photos
end

class Photo < ActiveRecord::Base
  belongs_to :gallery
end
0 голосов
/ 08 июля 2010

@ Raphael:

Имя столбца должно быть gallery_id (название модели + идентификатор), после добавления его

Попробуйте выполнить следующую строку в консоли ruby ​​

photos = Photo.find_all_by_gallery_id(Gallery.first)

Это должно дать вам список всех фотографий в первой галерее.

0 голосов
/ 08 июля 2010

Похоже, вам не нужна вложенная форма.Я бы полностью отбросил accepts_nested_attributes_for.

Рабочий процесс должен быть следующим: 1) выбрать галерею 2) загрузить и описать фотографию

Вы можете иметь отдельный контроллер / представление для управления галереями.

После того, как вы это сделали и проверили свою схему, приведенный выше пример должен работать (выбор коллекции для галерей, привязанных непосредственно к Фото)

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