1

我对 Ruby on Rails 很陌生。

我改变了这个线程,因为我意识到我在错误的一端寻找我的问题的解决方案。

这是我的问题:

我得到了一个 Class ProfileProposal,我用(使用 CarrierWave)上传了一个图像。现在我想将ProfileProposal转换为另一个名为Profile的类。所以我将所有信息传递给Profile的 NEW-Form 。

适用于字符串,但不适用于图像。

我已经尝试过/做过的事情:

将图像作为 GET 参数传递给 Create 方法:

<%= 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 给出的默认值。

提前致谢!

4

3 回答 3

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
于 2012-04-07T15:33:32.230 回答
0

Profile您应该在该表单中嵌入一个隐藏字段,ProfileProposal通过某个 ID 引用。然后在处理表单服务器端时,在所有内容都经过验证并准备好保存后,您应该使用一些读/写方法从ProfileProposal一个实例复制到Profile另一个实例。我不确定 CarrierWave 希望您如何做到这一点。

于 2012-04-08T14:23:55.817 回答
0

我终于解决了这个问题,通过使用回形针并通过创建一个新实例

Profile.create(:name => @profile_proposal.name, :image => @profile_proposal.image)
于 2012-04-11T10:39:10.753 回答