我的文章有一个编辑表格。
每篇文章都有一张图片。
我有当前图像和更改图像部分。
这是我的代码:
<%=form_for @article, url: articles_update_path,remote: true, html: {class: "form-horizontal"} do |f|%>
<fieldset class="content-group">
<legend class="text-bold">Images</legend>
<div class="form-group">
<label class="col-lg-2 text-semibold">Current image:</label>
<div class="col-lg-10">
<%= image_tag @article.image_url(:thumb) unless @article.image.blank?%>
</div>
</div>
<div class="form-group">
<label class="col-lg-2 text-semibold">Change image:</label>
<div class="col-lg-10">
<%= f.file_field :image, :class => 'file-input-custom', 'data-show-caption' => true, 'data-show-upload' => false, :accept => 'image/*'%>
</div>
</div>
</fieldset>
<% end %>
现在的问题是,如果用户选择编辑文章并且不再提供图像,则没有图像。
我想制作我的编辑表单,以便如果有人不选择图像,则会保存该文章已有的图像。
这可能吗?
答案 0 :(得分:0)
经过搜索,我发现我所要求的可能是不可能的。 您必须使用JavaScript,或者如果传递的图像为零,则必须检查控制器。
在我的情况下,如果 params [:article] [:image] 为零,我必须检查 article_params 。
def article_params
if params[:article][:image]==""
params.require(:article).permit(:id)
else
params.require(:article).permit(:id, :image)
end
end
答案 1 :(得分:0)
如果您使用gem 'carrierwave'
进行图片上传,请尝试此操作.......
您可以通过覆盖default_url
中的uploader
方法轻松完成此操作:
def default_url
# For Rails 3.1+ asset pipeline compatibility:
# ActionController::Base.helpers.asset_path("fallback/" + [version_name, "default.png"].compact.join('_'))
'default.jpg'
end
并将default.jpg文件放在app / assets / images文件夹中。
你的image_tag看起来像这样.......
<%= image_tag @article.image.url(:thumb) || @article.default_url %>