2016-06-07 85 views
0

我有我的文章的編輯窗體。Rails,有沒有辦法給file_field默認的圖像?

每篇文章都有一個圖像。

我有當前圖像和更改圖像部分。

這裏是我的代碼:

<%=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

您是否使用了圖片上傳'寶石「carrierwave''? –

回答

0

搜索後,我發現我所問的可能是不可能的。 您必須使用JavaScript,否則您必須檢查控制器是否傳遞圖像爲零。

在我來說,我在我的article_params檢查如果PARAMS [:文章] [:圖片]爲零與否。

def article_params 
    if params[:article][:image]=="" 
     params.require(:article).permit(:id) 
    else 
     params.require(:article).permit(:id, :image) 
    end 
end 
0

請試試這個,如果你正在使用gem 'carrierwave'的上傳圖片.......

您可以通過覆蓋在你的uploaderdefault_url方法做到這一點很容易:

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 %> 
相關問題