无法使用 Carrierwave 上传多张图片
Unable to upload multiple images with Carrierwave
我在通过 Carrierwave 上传多张图片时遇到问题,不确定是错误还是用户错误(可能是后者)。不过,我正在以一种相当标准的方式做所有事情(根据文档),所以这不起作用很奇怪。
我的 Gemfile 中有以下内容:
gem 'carrierwave', github: 'carrierwaveuploader/carrierwave'
我的image_uploader.rb:
class ImageUploader < CarrierWave::Uploader::Base
include CarrierWave::MiniMagick
def store_dir
"uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
end
version :thumb do
process :resize_to_limit => [590, 590]
end
version :featured do
process :resize_to_fill => [390, 390]
end
def extension_white_list
%w(jpg jpeg gif png)
end
end
我的article.rb文件:
class Article < ActiveRecord::Base
mount_uploaders :images, ImageUploader
end
我让参数从我的控制器传递:
def article_params
params.require(:article).permit(:title, :images, :body)
end
而 _form.html.erb 部分使用:
<%= form_for @article, html: { multipart: true } do |f| %>
<%= f.label :images %><br>
<%= f.file_field :images, multiple: true %><br>
<%= f.submit 'Update Article' %>
<% end %>
奇怪的是,当我上传两张图片时,我没有看到它们从更新方法传递到 article_params。
如果我撬开它,我可以看到:
params.require(:article).permit(:images)
Unpermitted parameters: title, images, body
=> {}
图像似乎是不允许的,即使我明确允许...
关于此处可能不正确的地方的任何线索?
解决方案似乎是:
params.require(:article).permit(:title, :body, images: [])
如果你查看 pry on images
参数,它的类型是一个数组:
> params[:article][:images].class
=> Array
来自文档:
To declare that the value in params must be an array of permitted scalar values map the key to an empty array:
params.permit(id: [])
我在通过 Carrierwave 上传多张图片时遇到问题,不确定是错误还是用户错误(可能是后者)。不过,我正在以一种相当标准的方式做所有事情(根据文档),所以这不起作用很奇怪。
我的 Gemfile 中有以下内容:
gem 'carrierwave', github: 'carrierwaveuploader/carrierwave'
我的image_uploader.rb:
class ImageUploader < CarrierWave::Uploader::Base
include CarrierWave::MiniMagick
def store_dir
"uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
end
version :thumb do
process :resize_to_limit => [590, 590]
end
version :featured do
process :resize_to_fill => [390, 390]
end
def extension_white_list
%w(jpg jpeg gif png)
end
end
我的article.rb文件:
class Article < ActiveRecord::Base
mount_uploaders :images, ImageUploader
end
我让参数从我的控制器传递:
def article_params
params.require(:article).permit(:title, :images, :body)
end
而 _form.html.erb 部分使用:
<%= form_for @article, html: { multipart: true } do |f| %>
<%= f.label :images %><br>
<%= f.file_field :images, multiple: true %><br>
<%= f.submit 'Update Article' %>
<% end %>
奇怪的是,当我上传两张图片时,我没有看到它们从更新方法传递到 article_params。
如果我撬开它,我可以看到:
params.require(:article).permit(:images)
Unpermitted parameters: title, images, body
=> {}
图像似乎是不允许的,即使我明确允许...
关于此处可能不正确的地方的任何线索?
解决方案似乎是:
params.require(:article).permit(:title, :body, images: [])
如果你查看 pry on images
参数,它的类型是一个数组:
> params[:article][:images].class
=> Array
来自文档:
To declare that the value in params must be an array of permitted scalar values map the key to an empty array:
params.permit(id: [])