对于载波多图像上传,"没有将nil隐式转换为字符串"错误

raj*_*raj 3 ruby-on-rails devise carrierwave

这几天困扰着我.我试过不同的方法.所以我会选择最简单的形式,这应该是有效但不是.

我有两个型号.Institute,和VirtualTour.

class Institute < ActiveRecord::Base
  mount_uploader :virtual_images, VirtualPicUploader

  has_many :virtual_tours, dependent: :destroy
  accepts_nested_attributes_for :virtual_tours,allow_destroy: true
end


class VirtualTour < ActiveRecord::Base
  belongs_to :institute
  mount_uploader :image, VirtualPicUploader
end
Run Code Online (Sandbox Code Playgroud)

我很乐意devise去学院.这个更简单的版本没有考虑强参数,所以我会保持这样.

  def account_update
      default_params.permit!
  end
Run Code Online (Sandbox Code Playgroud)

在编辑时会发生此上传,这就是使用account_update的原因.

<%= form_for(resource, as: resource_name, url: registration_path(resource_name), html: { method: :put ,  multipart: true }) do |f| %>
  <%= f.fields_for :virtual_tours do |ff| %>
   <%= ff.file_field :image, multiple: true %>
   <%= ff.hidden_field :institute_id, value: f.object.id %>
  <% end %>
<% end %>
Run Code Online (Sandbox Code Playgroud)

我提交时在浏览器中出现此错误.

   no implicit conversion of nil into String

   def cache_path
      File.expand_path(File.join(cache_dir, cache_name), root)
   end
Run Code Online (Sandbox Code Playgroud)

并在日志中,91ms完成500内部服务器错误(ActiveRecord:1.8ms)

TypeError (no implicit conversion of nil into String):
  carrierwave (0.10.0) lib/carrierwave/uploader/cache.rb:159:in `join'
  carrierwave (0.10.0) lib/carrierwave/uploader/cache.rb:159:in `cache_path'
  carrierwave (0.10.0) lib/carrierwave/uploader/cache.rb:131:in `block in cache!'
  carrierwave (0.10.0) lib/carrierwave/uploader/callbacks.rb:17:in `with_callbacks'
  carrierwave (0.10.0) lib/carrierwave/uploader/cache.rb:122:in `cache!'
  carrierwave (0.10.0) lib/carrierwave/mount.rb:329:in `cache'
  carrierwave (0.10.0) lib/carrierwave/mount.rb:163:in `image='
  carrierwave (0.10.0) lib/carrierwave/orm/activerecord.rb:39:in `image='
  activerecord (4.2.4) lib/active_record/attribute_assignment.rb:54:in `public_send'
  activerecord (4.2.4) lib/active_record/attribute_assignment.rb:54:in `_assign_attribute'
  activerecord (4.2.4) lib/active_record/attribute_assignment.rb:41:in `block in assign_attributes'
  actionpack (4.2.4) lib/action_controller/metal/strong_parameters.rb:185:in `each_pair'
  actionpack (4.2.4) lib/action_controller/metal/strong_parameters.rb:185:in `each_pair'
  activerecord (4.2.4) lib/active_record/attribute_assignment.rb:35:in `assign_attributes'
  activerecord (4.2.4) lib/active_record/nested_attributes.rb:513:in `assign_to_or_mark_for_destruction'
  activerecord (4.2.4) lib/active_record/nested_attributes.rb:479:in `block in assign_nested_attributes_for_collection_association'
  activerecord (4.2.4) lib/active_record/nested_attributes.rb:460:in `each'
Run Code Online (Sandbox Code Playgroud)

过去两天一直在研究这个问题.任何帮助,将不胜感激.

Flo*_*lov 12

我刚遇到同样的问题.我用mount_uploaders不修理它 mount_uploader