2016-09-01 14 views
0

Здравствуйте У меня есть форма, где я мог бы написать несколько статей, с названием, содержанием, в main_image, все они происходят из одной и той же модели прогресс В этой же форме У меня есть другое поле из другой модели progress_attachment Я использую его для загрузки нескольких изображений. (Я использовал carrierwave и SSR solution в Exemple)Рельсы и carrierwave Загрузка нескольких изображений не удается

Он работает для titledatecontentmain image!

Но поле с несколькими загрузками файлов ony позволяет одному изображению ... оно должно принимать несколько ... Что случилось?

Так вот моя форма:

= simple_form_for(@progress, html: { multipart: true}) do |f| 
    =f.input :title 
    =f.input :date 
    =f.input :content 
    =f.input :main_image 
    =f.simple_fields_for :progress_attachments do |f| 
    =f.input :image, multiple: true, name: "progress_attachments_attributes[:image][]" 
    =f.button :submit 

Мои модели:

progress.rb

class Progress < ActiveRecord::Base 
    default_scope ->{order(created_at: :DESC)} 
    mount_uploader :main_image, MainImageUploader 
    has_many :progress_attachments 
    accepts_nested_attributes_for :progress_attachments 

    validates :main_image, presence: true 
    validates :title, presence: true 
    validates :content, presence: true 
    validates :date, presence: true 
end 

progress_attachment.rb

class ProgressAttachment < ActiveRecord::Base 
    mount_uploader :image, ImageUploader 
    belongs_to :progress 
    validates :image, presence: true 
end 

Мои контроллеры: progresses_controller.rb

class ProgressesController < ApplicationController 

    def index 
    @progresses = Progress.all 
    end 

    def show 
    @progress = Progress.find(params[:id]) 
    @progress_attachments = @progress.progress_attachments.all 
    end 

    def new 
    @progress = Progress.new 
    @progress_attachment = @progress.progress_attachments.build 
    end 

    def create 
    @progress = Progress.new(progress_params) 

    respond_to do |format| 
     if @progress.save 
     params[:progress_attachments]['image'].each do |a| 
      @progress_attachment = @progress.progress_attachments.create!(:image => a) 
     end 
     format.html { redirect_to progresses_path, notice: 'Progress was successfully created.' } 
     else 
     format.html { render action: 'new' } 
     end 
    end 
    end 

    def update 
    respond_to do |format| 
     if @progress.update(article_params) 
     format.html { redirect_to @progress, notice: 'Article was successfully updated.' } 
     format.json { render :show, status: :ok, location: @progress } 
     else 
     format.html { render :edit } 
     format.json { render json: @progress.errors, status: :unprocessable_entity } 
     end 
    end 
    end 

    def destroy 
    @progress.destroy 
    respond_to do |format| 
     format.html { redirect_to articles_url, notice: 'Article was successfully destroyed.' } 
     format.json { head :no_content } 
    end 
    end 
    private 
    def progress_params 
     params.require(:progress).permit(:title, :content, :date, :main_image, progress_attachments_attributes: [:id, :progress_id, :image]) 
    end 

end 

progress_attachements_controller.rb

class ProgressAttachmentsController < ApplicationController 
    before_action :set_progress_attachment, only: [:show, :edit, :update, :destroy] 

    def index 
    @progress_attachments = ProgressAttachment.all 
    end 

    def new 
    @progress_attachment = ProgressAttachment.new 
    end 

    def create 
    @progress_attachment = ProgressAttachment.new(progress_attachment_params) 
    @progress_attachment = @progress.progress_attachments.build 
    respond_to do |format| 
     if @progress_attachment.save 
     format.html { redirect_to @progress_attachment, notice: 'Progress attachment was successfully created.' } 
     format.json { render :show, status: :created, location: @progress_attachment } 
     else 
     format.html { render :new } 
     format.json { render json: @progress_attachment.errors, status: :unprocessable_entity } 
     end 
    end 
    end 

    def update 
    respond_to do |format| 
     if @progress_attachment.update(progress_attachment_params) 
     format.html { redirect_to @progress_attachment, notice: 'Progress attachment was successfully updated.' } 
     format.json { render :show, status: :ok, location: @progress_attachment } 
     else 
     format.html { render :edit } 
     format.json { render json: @progress_attachment.errors, status: :unprocessable_entity } 
     end 
    end 
    end 

    def destroy 
    @progress_attachment.destroy 
    respond_to do |format| 
     format.html { redirect_to progress_attachments_url, notice: 'Progress attachment was successfully destroyed.' } 
     format.json { head :no_content } 
    end 
    end 

    private 

    def set_progress_attachment 
     @progress_attachment = ProgressAttachment.find(params[:id]) 
    end 

    def progress_attachment_params 
     params.require(:progress_attachment).permit(:progress_id, :image) 
    end 
end 

Помощь будет высоко ценится, спасибо много!

ответ

0

Мое несколько изображений теперь работают!

я заменил:

=f.input :image, multiple: true, name: "progress_attachments_attributes[:image][]"

по

=f.input_field :image, multiple: true, name: "progress_attachments_attributes[:image][]"