我正在使用 jquery-file-upload-rails gem 在我的表单上上传多个带有预览的图像。文件上传正常,但只有在浏览器刷新后才会呈现带有新照片的部分!也许,有人可以看到,出了什么问题。
我正在调用文件上传器在项目的编辑页面中加载照片图像:
= f.fields_for :photos, Photo.new do |ff|
= ff.file_field :img_file, multiple: true, name: "project[photos_attributes][][img_file]", id: 'new_photo'
照片控制器:
def create
@project = Project.find(params[:project_id])
@photo = @project.photos.create(params[:photo].permit(:img_file))
respond_to do |format|
format.js
format.html
end
end
photos.js.coffee 使 jquery-file-uploader-rails gem 工作:
jQuery ->
$('#new_photo').fileupload
dataType: 'script'
创建.js.erb
$('#photos').html("<%= j render(@photo) %>");
_photo.html.haml
.photo
- @project.photos.each do |photo|
= image_tag photo.img_file.thumb
= link_to 'Remove', photo, data: { confirm: "Are you sure?" }, method: :delete
这样我就可以上传照片了。但是我的 ajax 不起作用,即使我只放了 alert('help'); 在我的 create.js.erb 中,它没有响应。我究竟做错了什么?提前谢谢了!
更新 当前情况(在 Rich Peck 的帮助下):
我的模型:
class Project < ActiveRecord::Base
has_many :photos, dependent: :destroy
accepts_nested_attributes_for :photos, allow_destroy: true
end
class Photo < ActiveRecord::Base
belongs_to :project
validates :img_file, presence: true
mount_uploader :img_file, ImageUploader
end
项目负责人:
def edit
@project = Project.find(params[:id])
@project.photos.build
end
def update
@project = Project.find(params[:id])
@project.update(project_params)
end
params.require(:project).permit(photos_attributes: [:img_file])
/项目/编辑
= form_for @project do |f|
= f.fields_for :photos do |p|
= p.file_field :img_file, multiple: true, id: 'new_photo'
#photos
= render 'photos/photo'
/照片/_照片
.photo
= image_tag photo.img_file.thumb if photo.img_file?
= link_to 'Remove', photo, data: { confirm: "Are you sure?" }, method: :delete
/photos/create.js.erb
$('#photos').html("<%= j render(@photo) %>");
/javascripts/photos.js.coffee
jQuery ->
$('#new_photo').fileupload
dataType: 'script'