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)
过去两天一直在研究这个问题.任何帮助,将不胜感激.