Rails Carrierwave使用mount_uploaders的多个图像

时间:2015-02-10 21:53:31

标签: ruby-on-rails ruby-on-rails-4 carrierwave

我正在使用 Carrierwave 的主分支并使用mount_uploaders方法。我可以使用 mount_uploader 方法上传单个图像,而不是在使用多个图像时。

我收到此消息,无法缩小问题的确切范围。

保存后,在创建和更新上我收到:

NoMethodError

undefined method `map' for #<ActionDispatch::Http::UploadedFile:0x007fd281d6cdc8>

参数请求:

"award_images"=>#<ActionDispatch::Http::UploadedFile:0x007fd281d6cdc8 @tempfile=#<Tempfile:/var/folders/zx/47b5lzf16312zkh6949lm1_80000gq/T/RackMultipart20150210-22178-x4x4h9>,
 @original_filename="2009_01_addy_cfgc_videos.jpg",

使用json列 - award_images:json

查看:_form

<h2>Featured Image</h2>
<p>
     <%= image_tag(@award.award_images_url, :class => "image img-responsive featured") if @award.award_images? %> 
    <%= f.file_field :award_images, multiple: true, name: "award[award_images]" %>
    <%= f.hidden_field :award_images_cache %>
    </p>

    <p>
<label>
  <%= f.check_box :remove_award_images %>
  Remove Images
</label>
    </p>

型号:

class Award < ActiveRecord::Base
mount_uploaders :award_images, AwardImageUploader
end

控制器:我强大的参数

private

def award_params
params.require(:award).permit(:title, :award_images, :etc)
end

额外详情:

Rails 4.1.8

Ruby 2.1.2

的Postgres

2 个答案:

答案 0 :(得分:1)

params官方白名单略有不同。多次上传应列入{variables: []}列入白名单。请尝试以下方法:

def award_params
   params.require(:award).permit(:title, {award_images: []}, :etc)
end

source

答案 1 :(得分:0)

在您的视图文件中尝试使用其他名称:

<%= f.file_field :award_images, multiple: true, name: "award[award_images][]" %>

括号表示输入字段是一个数组(多个图像)。