是否可以使用相同的脚手架来创建相册并上传多张图片?

时间:2016-09-16 21:04:03

标签: ruby-on-rails carrierwave

我创建了一个rails应用程序,允许某人通过添加标题,描述和几张图片来创建相册。但是,我只能在网上找到需要两个控制器的方式,一个用于创建相册,另一个用于附加图像。

我现在已经习惯了Rails,尽管我知道我还有很多东西需要学习。

到目前为止,我设法允许用户创建只允许他上传的内容,只上传一张照片。

所以我更改了文件上传的表单部分,现在,它没有保存任何内容......

以下是我的文件:

_form.html.erb

<%= form_for @pet, html: { multipart: true } do |f| %>
    <% if @pet.errors.any? %>
        <div id="error_explanation">
          <h2><%= pluralize(@pet.errors.count, "error") %> prohibited this album from being saved:</h2>

          <ul>
            <% @pet.errors.full_messages.each do |message| %>
                <li><%= message %></li>
            <% end %>
          </ul>
        </div>
    <% end %>

    <div class="field">
      <%= f.label :name %><br>
      <%= f.text_field :name %>
    </div>
    <div class="field">
      <%= f.label :description %><br>
      <%= f.text_area :description %>
    </div>
    <div class="field">
      <%= f.label :image %><br>
      # added :multiple => true
      <%= f.file_field :image, :multiple => true %>
      <% if f.object.image? %>
          <%= image_tag f.object.image.thumb.url %>
          <%= f.label :remove_image %>
          <%= f.check_box :remove_image %>
      <% end %>
    </div>

    <div class="actions">
      <%= f.submit %>
    </div>
<% end %>

pets_controller.rb

class PetsController < ApplicationController
  before_action :set_pet, only: [:show, :edit, :update, :destroy]

  # GET /pets
  def index
    @pets = Pet.all
  end

  # GET /pets/1
  def show
  end

  # GET /pets/new
  def new
    @pet = Pet.new
  end

  # GET /pets/1/edit
  def edit
  end

  # POST /pets
  def create
    @pet = Pet.new(pet_params)

    if @pet.save
      redirect_to @pet, notice: 'Album was successfully created.'
    else
      render :new
    end
  end

  # PATCH/PUT /pets/1
  def update
    if @pet.update(pet_params)
      redirect_to @pet, notice: 'Album was successfully updated.'
    else
      render :edit
    end
  end

  # DELETE /pets/1
  def destroy
    @pet.destroy
    redirect_to pets_url, notice: 'Album was successfully destroyed.'
  end

  private
    # Use callbacks to share common setup or constraints between actions.
    def set_pet
      @pet = Pet.find(params[:id])
    end

    # Only allow a trusted parameter "white list" through.
    def pet_params
      params.require(:pet).permit(:name, :description, :image)
    end
end

所以我总结的问题如下:是否有一种简单的方法可以让我的表单在数组中保存多个图像,以便显示它们?

提前谢谢

0 个答案:

没有答案