如何在Rails 4中使用Paperclip上传多张图片

4

我正在尝试为我的市场控制器创建一个图像库,我能够使用paperclip上传单个图像。我在谷歌上搜索了一下,但没有找到任何解决方案。如何使用paperclip上传多个图像并以画廊形式显示?有什么方法吗?请给我建议。

1个回答

6
这篇文章详细解释了如何实现多文件上传的方法,以下是一些代码片段。
模型:
# app/models/market.rb
class Market < ActiveRecord::Base
  has_many :pictures, dependent: :destroy
end

# app/models/picture.rb
class Picture < ActiveRecord::Base
  belongs_to :market

  has_attached_file :image,
    path: ":rails_root/public/images/:id/:filename",
    url: "/images/:id/:filename"

  do_not_validate_attachment_file_type :image
end

查看:

# app/views/markets/_form.html.erb
<%= form_for @market, html: { class: "form-horizontal", multipart: true } do |f| %>
  <div class="control-group">
    <%= f.label :pictures, class: "control-label" %>
    <div class="controls">
      <%= file_field_tag "images[]", type: :file, multiple: true %>
    </div>
  </div>

  <div class="form-actions">
    <%= f.submit nil, class: "btn btn-primary" %>
    <%= link_to t(".cancel", default: t("helpers.links.cancel")),
                galleries_path, class: "btn btn-mini" %>
  </div>
<% end %>

控制器:


# app/controllers/markets_controller.rb
def create
  @market = Market.new(market_params)

  respond_to do |format|
    if @market.save

      if params[:images]
        params[:images].each { |image|
          @market.pictures.create(image: image)
        }
      end

      format.html { redirect_to @market, notice: "Market was successfully created." }
      format.json { render json: @market, status: :created, location: @market }
    else
      format.html { render action: "new" }
      format.json { render json: @market.errors, status: :unprocessable_entity }
    end
  end
end

你如何添加验证? - user4932805
1
@liroy 我认为通过在“Picture”模型中添加验证 - Andrey Deineko
1
嘿,我无法保存图片,请问你能否解释一下如何显示这些图片?它没有保存在public/image文件夹下。 - Nilay Singh
Paperclip::AdapterRegistry::NoHandlerError 在 HousesController#create 中出现,该怎么办? - Nischay Namdev
@Nischaynamdev 谷歌一下错误信息,看看有没有可能的解决方案? :) 我之前没遇到过这个错误,所以不确定该怎么做。 - Andrey Deineko
@AndreyDeineko 我尝试了但没有找到任何解决方案...实际上它显示错误,Paperclip::AdapterRegistry::NoHandlerError,而Rails指向market模型的create方法。 请访问https://dev59.com/zZHea4cB1Zd3GeqPtsM5以获取更多信息...这就是我正在实现的...你能看到吗? - Nischay Namdev

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接