你好 我有一个表格,我可以写一些文章,标题,内容,主要图像,它们都来自同一模型进展 在这个相同的形式我有另一个模型 progress_attachment 的另一个字段我用它来上传多个图像。 (我使用了carrierwave,并以SSR solution 为例)
适用于title
date
content
main image
!
但是多个文件上传的字段允许一个图像...它应该接受多个...出了什么问题?
所以这是我的表格:
= 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 :(得分:0)
我的多张图片现在可以使用了!
我换了:
#if defined
通过
#ifdef