我是Ruby on Rails的新手。
我改变了这个帖子,因为我认识到我在错误的一端搜索我的问题解决方案。
这是我的问题:
我有一个Class ProfileProposal ,我上传了一张图片(使用CarrierWave)。 现在我想将 ProfileProposal 转换为另一个名为个人资料的类。 所以我将所有信息传递给个人资料的新形式。
适用于字符串,但不适用于图像。
我已尝试/完成的事情:
将图像作为GET参数传递给创建方法:
<%= form_for @profile, :url => { :action => "create", :controller => "profiles", :image => @profile_proposal.image } do |f| %>
#
现在有效,所以我有图片网址。
什么不起作用如下:
@profile = Profile.new(params[:profile], :image => new_image_url)
# OR
@profile.image = new_image_url
@ profile.image仍然具有Carrierwave给出的默认值。
提前致谢!
答案 0 :(得分:0)
我来自使用回形针,而不是载波,所以我会尝试保持这个高水平。但我对你有个想法。也许您可以在新附件存在之前设置它的文件名,然后将图像移动到该路径。使用回形针,这将像:
@profile.image_file_name = "profile.jpg"
# creates the directory of the new path. There's probably a better way to do this:
FileUtils.mkdir_p @profile.image_file_path.gsub(/[^\/]*$/,'')
FileUtils.mv @profile_proposal.image_path @profile.image_path
答案 1 :(得分:0)
您应该在Profile
表单中嵌入隐藏字段,并通过某个ID引用ProfileProposal
。然后在处理表单服务器端时,在所有内容都经过验证并准备好保存之后,您应该使用一些读/写方法从ProfileProposal
实例到Profile
实例复制映像。我不确定CarrierWave是如何要你这样做的。
答案 2 :(得分:0)
我最后通过使用paperclip并通过
创建一个新的实例来解决这个问题Profile.create(:name => @profile_proposal.name, :image => @profile_proposal.image)