2016-09-01 21 views
0

こんにちは を失敗し、それらはすべて同じ形式で進捗同じモデルから 来ます私は別のモデルから別のフィールドを持っていますprogress_attachment私は複数の画像をアップロードするために使用します。 (私はcarrierwave使用、およびexempleなどSSR solution)それはtitledatecontentmain imageのために働くRailsとcarrierwaveアップロード複数の画像は、私は、タイトル、内容、main_imageで、いくつかの記事を書くことができ、フォームを持っている

しかし、複数のファイルをアップロードするフィールドでは、1つのイメージが許可されています...複数を受け入れる必要があります...何が問題なのですか?だからここ

は私のフォームです:

= 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][]"

関連する問題