我现在正在使用Carrierwave上传图片.一切都很好,除了一个,– 当我添加复选框以删除上传的图像时,我收到错误:“无法批量分配受保护的属性:remove_image”.
形成:
... <%= f.check_box :remove_image %> <%= f.label :remove_image,"remove image" %> ...
模型:
class Manufacturer < ActiveRecord::Base attr_accessible :name,:alias,:short_description,:long_description,:image,:publish,:position,:meta_keywords,:meta_description,:meta_title mount_uploader :image,ManufacturerUploader validates_presence_of :name,:alias validates_uniqueness_of :name,:alias validates_format_of :alias,:with => /^[a-z\d\-]*$/,:message => "a-z,0-9 \' - \' ONLY" default_scope order('position ASC') before_destroy :remember_image after_destroy :remove_img protected def remember_image @image_name = self[:image] end def remove_img File.delete("#{Rails.root}/public/images/manufacturer/#{@image_name}") File.delete("#{Rails.root}/public/images/manufacturer/thumb_#{@image_name}") end end
提供者:
class ManufacturerUploader < CarrierWave::Uploader::Base include CarrierWave::MiniMagick include Sprockets::Helpers::RailsHelper include Sprockets::Helpers::IsolatedHelper storage :file before :store,:remember_cache_id after :store,:delete_tmp_dir def remember_cache_id(new_file) @cache_id_was = cache_id end def delete_tmp_dir(new_file) if @cache_id_was.present? && @cache_id_was =~ /\A[\d]{8}\-[\d]{4}\-[\d]+\-[\d]{4}\z/ FileUtils.rm_rf(File.join(root,cache_dir,@cache_id_was)) end end def store_dir "images/#{model.class.to_s.underscore}" end def default_url "" + [version_name,"default.jpg"].compact.join('_') end process :resize_to_fit => [300,300] version :thumb do process :resize_to_fit => [150,150] end def extension_white_list %w(jpg jpeg gif png) end def filename "#{secure_token(10)}.#{file.extension}" if original_filename.present? end protected def secure_token(length=16) var = :"@#{mounted_as}_secure_token" model.instance_variable_get(var) or model.instance_variable_set(var,SecureRandom.hex(length/2)) end end
我认为Carrierwave必须利用:remove_image,但不要这样做.这段代码有什么问题?
解决方法
只需将remove_image添加到attr_accessible列表即可
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。