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
jquery-file-uploader-rails gem を機能させるための photos.js.coffee:
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
というわけで写真アップできます。しかし、alert('help'); だけを入れても、私の ajax は機能しません。私の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'