Вложенные атрибуты, изображение не сохраняется RAILS

У меня есть форма редактирования, в которой пользователь может добавлять изображения. форма принадлежит модели "Галерея", изображения - это детская модель "Изображения выставки". Я могу редактировать заголовок, поскольку он относится к родительской модели, однако прикрепленные изображения появляются как ниль (если я покажу их без рельсов image_tag, я получу что-то вроде этого. Идентификатор выставки: 1, image_file_name: nil, image_content_type: nil, image_file_size: nil, image_updated_at: nil, gallery_id: 8, created_at :). Я представляю себе его реализацию вложенных форм, которые я не совсем понимаю.

Вот соответствующий код:

КОНТРОЛЛЕР ГАЛЕРЕИ

def update
 @gallery = Gallery.friendly.find params[:id]
 respond_to do |format|
 if @gallery.update(gallery_params)
 format.html { redirect_to @gallery, notice: 'Gallery was successfully updated.' }
 format.json { render :show, status: :ok, location: @gallery }
 else
 format.html { render :edit }
 format.json { render json: @gallery.errors, status: :unprocessable_entity }
 end
 end
 end

 def edit
 @gallery = Gallery.friendly.find params[:id]
 @image = @gallery.exhibition_images.new
 end

МОДЕЛЬ ГАЛЕРЕИ

class Gallery < ActiveRecord::Base
 extend FriendlyId
 friendly_id :title, use: :slugged
 belongs_to :guide
 has_many :exhibition_images, :autosave => true
 accepts_nested_attributes_for :exhibition_images
end

ИЗОБРАЖЕНИЕ ВЫСТАВКИ

class ExhibitionImage < ActiveRecord::Base
 belongs_to :gallery, :autosave => true

 has_attached_file :image, styles: { small: "100x100", guide: "500x500" }
 validates_attachment_content_type :image, :content_type => ["image/jpg", "image/jpeg", "image/png", "image/gif"]

end

РЕДАКТИРОВАТЬ

<%= bootstrap_form_for(@gallery, :html => {:multipart => true}, layout: :horizontal, label_col: "col-sm-2", control_col: "col-sm-10") do |f| %>
 <%= f.text_field :title %> 

<%= f.fields_for :exhibition_images do |f| %>
 <%= f.file_field :image, help: "Ensure images are minimum 400x400px" %>

 <% end %>
 <%= f.submit "Create/Update", class: "btn btn-primary" %>
<% end %>

Как получить прикрепленные изображения для сохранения в db !?

1 ответ

Хорошо, мне нужно было добавить эту строку к моим параметрам

params.require(:gallery).permit(:title, exhibition_images_attributes: [:image])

'exhibition_images_attributes' вместо атрибута модели. Не знаю, почему, но это сработало.

licensed under cc by-sa 3.0 with attribution.