协议has_many图片。
我正在使用本地存储空间。
在控制器中,我将@protocol复制到@ dest并使用:
@protocol.images.each do |i|
tmp=i.dup
tmp.avatar = File.open(i.avatar.current_path)
tmp.save!
@dest.images << tmp
end
该行:
tmp.avatar = File.open(i.avatar.current_path)
引发此错误:
“无法将nil转换为整数”
Shell会话如下所示:
>> i.avatar.current_path
=> "/Users/perry_mac/rails_projects/mymri/public/system/images/avatars/000/000/097/original/ruby.jpg"
>> File.open(i.avatar.current_path)
=> # <File:/Users/perry_mac/rails_projects/mymri/public/system/images/avatars/000/000/097/original/ruby.jpg>
>> tmp.avatar = File.open(i.avatar.current_path)
!! #<TypeError: can't convert nil into Integer>
>>
我做错了什么?我的目标是复制记录并复制相关的图像文件。我可以存储重复项。
答案 0 :(得分:0)
这有效:
@protocol.images.each do |i|
tmp=Image.new
tmp.avatar = File.open(i.avatar.current_path)
tmp.description = i.description
tmp.save
@dest.images << tmp
end
但我宁愿不必手动复制其他列,例如'description'当我使用tmp = i.dup时,不确定它为什么会失败。