Ruby on rails RoR:Carrierwave文件上传-can';t将nil转换为字符串

Ruby on rails RoR:Carrierwave文件上传-can';t将nil转换为字符串,ruby-on-rails,file,upload,carrierwave,Ruby On Rails,File,Upload,Carrierwave,我已经尝试按照自述文件中的建议实现多文件上传 给出错误“无法将nil转换为字符串”的行是 @event = Event.new(event_params) 从我的创建操作事件参数由 params.require(:event).permit(:name, :description, ... lots of params ..., {images: []}) 在表单视图中,文件字段由 <%= f.file_field :images, multiple: true %> 当

我已经尝试按照自述文件中的建议实现多文件上传

给出错误“无法将nil转换为字符串”的行是

@event = Event.new(event_params) 
从我的创建操作<代码>事件参数由

params.require(:event).permit(:name, :description, ... lots of params ..., {images: []})
在表单视图中,文件字段由

<%= f.file_field :images, multiple: true %>

当我删除这一行时,它会消除错误,但显然不会上传文件。即使我在此字段中选择了多个文件,也会发生此错误。有人知道出了什么问题吗

app/models/event.rb

class Event < ActiveRecord::Base
  has_many :swipes
  has_many :event_images
  accepts_nested_attributes_for :event_images
  mount_uploader :headerImage, HeaderImageUploader
  mount_uploader :images, ImagesUploader
  geocoded_by :full_street_address
  after_validation :geocode, :if => :address_changed?
  after_validation :reverse_geocode, :if => :latitude_changed?
  # Event validations
  validates :name, :presence => true, length: { in: 5..30 }           
  validates :title, :presence => true, length: { in: 5..60 }
  validates :description, :presence => true, length: { in: 5..2500 }
  validates :headerImage, :presence => true
  validates :venue, :presence => true
  validates :street_address, :presence => true
  validates :post_code, :presence => true
  validate :check_begin_time
  validates :price, :presence => true
  validates :host_name, :presence => true

  def check_begin_time
    if door_time.blank? and start_time.blank?
        errors.add(:base, 'At least one of "door time" and "start time" must be filled in')
     #one at least must be filled in, add a custom error message
     return false
    else
     return true
    end
  end


  def full_street_address
    [venue, street_address, town, post_code, country].compact.join(', ')
  end

  def address_changed?
    attrs = %w(venue street_address town country)
    attrs.any?{|a| send "#{a}_changed?"}
  end

end
app/models/event.rb
类事件:地址改变了吗?
验证后:反向地理编码:如果=>:纬度改变?
#事件验证
验证:name,:presence=>true,长度:{in:5..30}
验证:title,:presence=>true,长度:{in:5..60}
验证:description,:presence=>true,长度:{in:5..2500}
验证:headerImage,:presence=>true
验证:地点,:状态=>真
验证:street\u地址,:presence=>true
验证:post_代码,:presence=>true
验证:检查开始时间
验证:price,:presence=>true
验证:主机名:presence=>true
def检查开始时间
如果门是空的?开始时间是空的?
错误。添加(:base,'必须至少填写“门时间”和“开始时间”中的一个')
#必须至少填写一条,添加自定义错误消息
返回错误
其他的
返回真值
终止
终止
def完整街道地址
[地点、街道地址、城镇、邮政编码、国家].compact.join(“,”)
终止
def地址改变了吗?
属性=%w(场馆街道\地址城镇国家)
属性有什么变化吗?{a}发送“{a}改变了吗?”}
终止
终止

app/uploaders/images\u uploader.rb
类ImagesUploader
这是我的表单发送的HTTP请求

"images"=>[#<ActionDispatch::Http::UploadedFile:0x007f5a5994a8a8
@tempfile=#<File:/tmp/RackMultipart20151011-15000-rfthvn.jpg>,
@original_filename="87fcddc27a42693e-Backroom2.jpg",
@content_type="image/jpeg",
@headers="Content-Disposition: form-data; name=\"event[images][]\"; filename=\"87fcddc27a42693e-Backroom2.jpg\"\r\nContent-Type: image/jpeg\r\n">,
#<ActionDispatch::Http::UploadedFile:0x007f5a599571e8 @tempfile=#<File:/tmp/RackMultipart20151011-15000-1dxeg2k.jpg>,
@original_filename="10009818_837806636276971_1685343322891827736_n.jpg",
@content_type="image/jpeg",
@headers="Content-Disposition: form-data; name=\"event[images][]\"; filename=\"10009818_837806636276971_1685343322891827736_n.jpg\"\r\nContent-Type: image/jpeg\r\n">,
#<ActionDispatch::Http::UploadedFile:0x007f5a59956e78 @tempfile=#<File:/tmp/RackMultipart20151011-15000-1s6lvjd.jpg>,
@original_filename="10690041_759673270756975_1958518644007085576_n.jpg",
@content_type="image/jpeg",
@headers="Content-Disposition: form-data; name=\"event[images][]\"; filename=\"10690041_759673270756975_1958518644007085576_n.jpg\"\r\nContent-Type: image/jpeg\r\n">,
#<ActionDispatch::Http::UploadedFile:0x007f5a59956e50 @tempfile=#<File:/tmp/RackMultipart20151011-15000-1i5076x.jpg>,
@original_filename="10857738_809883175735984_4532818664928411079_n.jpg",
@content_type="image/jpeg",
@headers="Content-Disposition: form-data; name=\"event[images][]\"; filename=\"10857738_809883175735984_4532818664928411079_n.jpg \"\r\nContent-Type: image/jpeg\r\n">]
“图像”=>,
#,
#,
#]

您需要正确设置CarrierWave目录:

CarrierWave.configure do |config|
  config.root = File.expand_path '../public', __FILE__
end

在event.rb模型中,它应该是:
mount\u uploaders:images,ImagesUploader
而不是
mount\u uploader

请显示您的模型和上载程序我尝试将其放入config/initializers/carrierwave.rb中。那是合适的地方吗?这似乎没有改变什么
CarrierWave.configure do |config|
  config.root = File.expand_path '../public', __FILE__
end