添加多张图片

1.rails g uploader avatar

avatar_uploader.rb
1
2
3
4
5
6
7
8
9
include carrierwave::minimagick 前面的#去掉
在store_dir end 下加
process resize_to_fit:[800,800]
version :thumb do
process resize_to_fit:[200,200]
end
version :medium do
process resize_to_fit:[400,400]
end

2.建立photo.rb model文件:
$ rails g model xxx xxxx:xxx avatar:string
自然建立migration文件

3.在需要添加图片的model文件中加上

1
2
has_many :photos
accepts_nested_attributes_for :photos
photo.rb
1
2
mount_uploader :avatar, AvatarUploader
belongs_to :case

4.在需要添加图片的controller文件中加上
def new下面加
@photo = @xxx.photos.build

def create中if @xxx.save下面加

1
2
3
4
5
if params[:photos] != nil
params[:photos]['avatar'].each do |a|
@photo = @xxx.photos.create(:avatar => a)
end
end

def show 下面加

1
2
3
@photos = @xxx.photos.all
```
在def update变成

def update
if params[:photos] != nil
@case.photos.destroy_all #将原来的图片删掉
[:photos][‘avatar’].each do |a|
@photo = @case.photos.create(:avatar => a)
end
@case.update(case_params)
redirect_to cases_path
elsif
@case.update(case_params)
redirect_to cases_path
else
render :edit
end
end

1
2

5.在new页面添加

<%= f.label :avatar %>
<%= f.file_field :avatar, :multiple => true,name:”photos[avatar][]” %>

1
在show页面添加
<% if @photos.present? %> @xxx.photos.each do |photo| %> <%= image_tag photo.avatar.url(:thumb) %> <% end %> <% else %> 暂无图片 <% end %>
``` ps:一个xxx对应多个photo 一个photo对应一个avatar 这种时候要显示avatar就需要对于@xxx.photos这个数组进行遍历来实现