【发布时间】:2015-07-10 01:41:32
【问题描述】:
在我的场景中,我使用 CarrierWave 上传图像。但是我的“图像”模型是多态的,因为不止一个模型使用“图像”模型。对于每个模型,有 4 种不同的图像类型(图标、标题、常规、滑块)。所以我会在“Image”模型中为他们制作“ENUM”。但问题是,在“新”或“编辑”视图中,我怎么知道哪个“图像类型”的文件上传?
这是我的图像模型:
class Image < ActiveRecord::Base
belongs_to :imageable, polymorphic: true
mount_uploader :image, ImageUploader
enum image_type: {icon: 1, title: 2, regular: 3, slider: 4}
end
这是服务模型(该模型是具有图像的模型之一):
class Service < ActiveRecord::Base
has_many :images, as: :imageable, :dependent => :destroy
accepts_nested_attributes_for :images
end
这是我的 _form.html.erb:
<div class="control-group">
<!-- <label class="control-label" for="input1">Adı</label> -->
<div class="controls">
<%= f.input :service_name, input_html: { class: "span6", id: "input1"}, label: "Hizmet Adı" %>
</div>
</div>
<div class="control-group">
<!-- <label class="control-label" for="inputRemarks">Adres</label> -->
<div class="controls">
<%= f.input :service_description, input_html: { class: "span12 wysihtml5", rows: "6"}, as: :text, label: "Hizmet Açıklaması" %>
</div>
</div>
<div class="control-group">
<----- THIS PART IS FOR FILE UPLOAD ----------->
<div class="controls">
<label class="control-label">Hizmet Büyük Resimi</label>
<div class="fileupload fileupload-new" data-provides="fileupload">
<div class="fileupload-new thumbnail" style="width: 200px; height: 150px;"><img src="http://www.placehold.it/200x150/EFEFEF/AAAAAA&text=no+image" alt=""/></div>
<div class="fileupload-preview fileupload-exists thumbnail" style="max-width: 200px; max-height: 150px; line-height: 20px;"></div>
<div>
<span class="btn btn-file"><span class="fileupload-new">Resim Seç</span><span class="fileupload-exists">Değiştir</span>
<%= f.input :images, input_html: { type: :file, class: "default"}, wrapper: false, label: false %></span>
<a href="#" class="btn fileupload-exists" data-dismiss="fileupload">Sil</a>
</div>
</div>
<----- THIS PART IS FOR FILE UPLOAD ----------->
</div>
</div>
<div class="control-group">
<!-- <label class="control-label" for="input2">Soyadı</label> -->
<div class="controls">
<%= f.input :meta_keywords, input_html: { class: "span6", id: "input2"}, label: "Anahtar Kelimeler" %>
</div>
</div>
<div class="form-actions">
<%= button_tag(type: 'submit', class: "btn btn-primary") do %>
Kaydet
<% end %>
<!-- <button type="button" class="btn">Cancel</button> -->
</div>
我是 Rails 新手,难不难,我还不知道。但这种类型的解决方案对我来说看起来不错。但我被这个问题困住了,我需要你的帮助。
【问题讨论】:
标签: ruby-on-rails ruby-on-rails-4 carrierwave image-uploading