我的网站用于发布专辑评论,称为Pins。引脚模型具有以下属性:
:artist,:year,:title,:rank,:description,和:image
图像使用Paperclip,如果重要,则存储在Amazon S3上
我正在尝试允许用户查看其他用户发布的评论,然后点击链接以更简单地为同一专辑撰写自己的评论。所以基本上链接将它们带到Pin.new页面,表格已经有:artist,:title,:image和:year ready in。
我想出了如何在带来所有属性的同时做到这一点,包括:description和:rank,这是我不想要的。我也不能够将图像带到新表单。
这是使用的<_p>中的pins_controller.rb代码
def copy
@source = Pin.find(params[:id])
@pin = @source.dup
render 'new'
end
在我的节目视图中:
<%= link_to "copy", copy_pin_path(params[:id]) %>
所以问题是如何只对@ source.dup:artist,:title和:year
问题二是如何带回回形针图像。我尝试将其添加到我的pins_controller.rb: def copy
@source = Pin.find(params[:id])
@pin = @source.dup
@pin.image = @source.image
render 'new'
end
但这没有用。
更新:miller350回答了我的第一个问题,但我仍然无法将回形针图像复制到&#34; new&#34;形成。在控制台中,我可以从一个Pin记录中复制并保存一个新的引脚,如下所示:
r = Pin.new
r.image = Pin.find(83).image
r.save
我认为问题在于新的引脚形式要求在保存引脚之前从用户的PC中选择图像。无论Paperclip的功能是什么,我认为这就是我被卡住的地方。
答案 0 :(得分:2)
对于第一部分,您可以单独提取属性并将它们设置为实例变量,对于第二部分,您可以使用URI。
def copy
@source = Pin.find(params[:id])
@image = URI.parse(@source.image)
@pin = Pin.new(artist: @source.artist, title: @source.title, year: @source.year, image: @image)
render 'new'
end
答案 1 :(得分:1)
以下是我最终要将图像复制到新的图钉形式。
我已经设置了Paperclip的image_remote_url功能,但是我需要在pin.rb中将.to_s添加到下面的方法中:
def image_remote_url=(url_value)
self.image = URI.parse(url_value).to_s unless url_value.blank?
super
end
然后我的控制器:
def copy
@source = Pin.find(params[:id])
@image = @source.image.url
@pin = Pin.new(artist: @source.artist, album: @source.album, year: @source.year, image_remote_url: @image)
render 'new'
end
这会将图像的网址粘贴到新表单中。它只适用于我的Heroku生产版本,而不适用于本地版本。