У меня есть приложение, в котором пользователь может создать gallery
, к которому он может прикреплять некоторые изображения. Для этой цели я использую несущую волну, и она структурирована следующим образом. У каждого gallery
есть много pictures
, и каждый picture
имеет 1 image
.RoR: Вложенное поле в форме
class Gallery < ActiveRecord::Base
has_many :pictures, dependent: :destroy
accepts_nested_attributes_for :pictures, allow_destroy: true;
end
class Picture < ActiveRecord::Base
belongs_to :gallery
mount_uploader :image, ImageUploader
end
Фотографий загружаются с следующей формой
<%= form_for(@gallery, html: {multipart: true}) do |f| %>
<%= f.label :title %><br />
<%= f.label :pictures %><br />
<% if @gallery.pictures %>
<ul class="form-thumbs clearfix">
<% @gallery.pictures.each do |picture| %>
<li>
<%= image_tag(picture.image) %>
<%= link_to "Delete", gallery_picture_path(@gallery, picture), method: :delete %>
</li>
<% end %>
</ul>
<% end %>
<%= file_field_tag "images[]", type: :file, multiple: true %>
<% end %>
, а затем обрабатываются со следующим действием
class GalleriesController < ApplicationController
def create
@gallery = Gallery.new(gallery_params)
if @gallery.save
if params[:images]
params[:images].each do |image|
@gallery.pictures.create(image: image)
end
end
end
end
end
Это все работает хорошо, но теперь я хотел бы добавить вложенное поле :title
, так что, когда я открываю форму, и есть загруженные изображения, я могу дать название каждой картинке. Может ли кто-нибудь объяснить мне, как соответствовать этому в существующей форме?
Благодарим вас за ответ. Я получаю следующую ошибку 'undefined method 'title' для #
Работает ли это, если вы удаляете заголовок 'p.text_field: title 'проверить? –
Более или менее, я могу загрузить форму сейчас, но никакая фотография не создается, когда я отправляю (я тоже не вижу ее в написанном вами действии) – sjbuysse