提问人:greyoxide 提问时间:7/11/2013 最后编辑:4444greyoxide 更新时间:4/6/2020 访问量:3863
Rails CarrierWave 编辑/更新表单
rails carrierwave edit/update form
问:
在我的 rails 项目中,我使用 Carrierwave 通过雾将图像上传到 S3。到目前为止,我已经将 CRUD 频谱的创建、读取和删除部分工作起来。
我的问题是编辑/更新部分。我使用与创建记录相同的编辑方法。当我单击编辑链接时,表单会将我的所有数据加载到表单字段中进行编辑,但图像除外。表单字段为空,就好像没有与记录关联的图像一样。_form.html.erb
如何更新已保存到 S3 的映像?
模特/listing.rb
class Listing < ActiveRecord::Base
attr_accessible :body, :price, :title, :image
mount_uploader :image, ListingUploader
end
Controllers/listings_controller.rb(编辑/更新部分)
def edit
@listing = Listing.find(params[:id])
end
def update
@listing = Listing.find(params[:id])
if @listing.update_attributes(params [:listing])
redirect_to :action => 'show', :id => @listing
else
render :action => 'edit'
end
end
_form.html.erb
<%= form_for @listing, :html => { :multipart => true } do |l| %>
<p>
<%= l.label :title %>
<%= l.text_field :title %>
</p>
<p>
<%= l.label :price %>
<%= l.text_field :price %>
</p>
<p>
<label>Upload a Picture</label>
<%= l.file_field :image %>
<%= l.hidden_field :image_cache %>
</p>
<div class="image-pre">
<%= image_tag(@listing.image_url(:thumb)) if @listing.image? %>
</div>
<p>
<%= l.label :body %>
<%= l.text_area :body, :class => "tinymce" %>
<%= tinymce %>
</p>
<%= l.submit %>
<% end %>
答:
2赞
cgat
2/7/2014
#1
在 listings_controller.rb 中,尝试如下操作:
def edit
@listing = Listing.find(params[:id])
@listing.image.cache!
end
我自己还没有测试过,但我认为它可能会起作用,因为image_cache字段通常用于规避这个问题。
0赞
IAmNaN
4/6/2020
#2
我前段时间将我的应用程序升级到 Rails 6,然后开始遇到这个问题。
顶级域名;您需要 Rails 5.0 及更高版本的 Carrierwave gem 版本 2.1.0 或更高版本。
我曾经看过载波是否可以升级。检查 Gemfile 以查看请求的版本是否设置正确。还要检查 Gemfile.lock 以查看是否有其他 gem 阻碍了它;您还需要升级它们。然后我曾经执行实际的升级。bundle outdated --strict
bundle update --strict
评论