使用carrierwave的活动管理员

时间:2014-06-12 11:49:17

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

我正在使用带有载波的主动管理员。 我在使用主动管理员上传图片时遇到问题。 我的public/img文件夹中已有一个名为banner.png的图像。 现在我想通过管理面板用另一个图像覆盖该图像。 当我上传图片时,它会显示如下参数:

Parameters: {"utf8"=>"✓", "authenticity_token"=>"iHI02QCklnooY2WvKOAI/OUPi6phmvVsYnXuRzvXg2Q=", "home_banner"=>{"home_banner_image"=>{"image"=>#<ActionDispatch::Http::UploadedFile:0xd8f728c @original_filename="Penguins.jpg", @content_type="image/jpeg", @headers="Content-Disposition: form-data; name=\"home_banner[home_banner_image][image]\"; filename=\"Penguins.jpg\"\r\nContent-Type: image/jpeg\r\n", @tempfile=#<File:/tmp/RackMultipart20140612-18313-18qw3aj>>}}, "commit"=>"Update Home banner", "id"=>"539981982131fc9c0e000002"}

但它不会在数据库中保存图像。

这是我的模型和上传者

模型: -

class Banner
 include Mongoid::Document
 include Mongoid::Timestamps::Created
 include Rails.application.routes.url_helpers

 field :banner_image, type: String
 mount_uploader :banner_image, BannerUploader
end

者: -

require 'open-uri'
require "digest/md5"
require 'carrierwave/processing/mini_magick'
class BannerUploader < CarrierWave::Uploader::Base

 storage :file

 def store_dir
  # "uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
  "/public/img"
 end

 def extension_white_list
  %w(jpg jpeg gif png)
 end

 # Override the filename of the uploaded files:
 # Avoid using model.id or version_name here, see uploader/store.rb for details.
 def filename
  "banner.png" if original_filename
 end

我在admin文件夹中的activeadmin是: -

ActiveAdmin.register Banner do

 index do                            
  column :banner_image                              
  default_actions                   
 end 

 form(:html => { :multipart => true }) do |f|
  f.inputs "Banner Image" do
   f.semantic_fields_for :banner_image do |fi|
    fi.input :image, :as => :file
   end
  end
  f.buttons
 end 
end

我正在使用mongoDb,我的要求就像我现在已经在public / img文件夹中有一个图像来通过管理员更新它,以便它自动反映在前端,而不会对视图代码进行任何更改。

请加入这个问题。 非常感谢。

1 个答案:

答案 0 :(得分:0)

我无法保证这一点,这只是出于我的想法而没有经过测试:

对于较早的ActiveAdmin版本的0.6和1.0之前的~Okt。/ Nov。 2014

f.input :header_image, :as => :file, :hint => f.template.image_tag(f.object.image.url(:thumb))

在~Ott./Nov之后的ActiveAdmin 1.0。 2014

f.input :header_image, :as => :file, :hint => image_tag(object.image.url(:thumb))