【发布时间】:2016-01-24 10:01:56
【问题描述】:
我正在使用 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'
create.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'
/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'
【问题讨论】:
-
在您的表单上传中添加远程:true,这将启用 ajax 请求
-
@Marv-C,感谢您的回复!我将它添加到我的表单中,仍然无法正常工作!实际上我正在关注本教程youtube.com/watch?v=x23aIQPa-DY,它适用于具有 ajax 渲染的一个模型,但不适用于我的两个模型,虽然我可以上传图像,只是没有 ajax 渲染..
-
jquery-file-upload 不需要
remote: true;它由插件处理 -
@RichPeck 你是对的。我也在尝试调试这个问题,但一点运气都没有。
-
@RichPeck,甚至可以用嵌套表单为这个插件渲染 ajax 吗?上传作品,渲染不...
标签: jquery ruby-on-rails ajax jquery-fileupload-rails