ユーザーを同じページにとどめ、更新が実行された後にJavascriptを実行しようとしています。
ただし、js.erbが呼び出されないようで、代わりにルート「http:// localhost:3000 / upload_images / id」にリダイレクトされ、firebugコンソールが生成します...
"NetworkError: 406 Not Acceptable -http://localhost:3000/upload_images/id"
アクションの更新
def update
@upload_image = UploadImage.find(params[:id])
#If this image is set as the preview restore all associated images to default
if params[:upload_image][:preview] == "1"
other_uploads = @upload_image.upload.upload_images.where("not upload_images.id = ?", @upload_image.id)
other_uploads.each do |upload_image|
upload_image.preview = "0"
upload_image.save
end
end
respond_to do |format|
if @upload_image.update_attributes(params[:upload_image])
#keep the user on current page and call some Javascript
format.js{render :template => 'update.js.erb'}
else
format.html { render action: "edit" }
format.json { render json: @upload_image.errors, status: :unprocessable_entity }
format.js
end
end
end
Update.js.erb
alert("hello world!");
フォームを編集
<%=form_for(@upload_image) do |f| %>
....
<% end %>
ライブアップデートを表示することは私にとって重要ではありません。ユーザーがそれらを表示するために更新する必要があるかどうかは関係ありません。ページの状態をそのままにして(JQueryによって行われたいくつかの変更を除いて)、データベースに投稿したいだけです。