这是我对表单的看法:
#popupBox
%h1 Change Password
%p Update password for user: #{@user.email}.
#formHolder
= simple_form_for @user, url: update_password_user_path, html: { class: 'remote-form' }, remote: true do |f|
= f.input :password, required: true
= f.button :submit, 'Update Password'
这是 Controller 代码:
def update_password
@user = User.find(params[:id])
if @user.update(update_password_params)
render layout: false # This shows a nice "Completed" message for the user.
else
render action: 'edit_password', layout: false
end
end
还有我的 JavaScript 代码:
$(document).ready ->
$("form.remote-form").on("ajax:success", (e, data, status, xhr) ->
console.log("Working")
$("form.remote-form").append xhr.responseText
).on "ajax:error", (e, xhr, status, error) ->
console.log("Not working")
$("form.remote-form").append "<p>ERROR</p>"
当我提交表单时,会触发 AJAX 帖子(在我的开发工具中看到),但 console.log 调用都不会触发。
如何检测表单何时通过 AJAX 提交,并将 Controller 代码的结果放置在 dom 中的表单位置内?
最佳答案
在 Controller 中添加 json 响应:
def update_password
@user = User.find(params[:id])
respond_to do |format|
if @user.update(update_password_params)
format.json { render json: @user, status: :updated }
else
format.json { render json: @user.errors, status: :unprocessable_entity }
end
end
end
关于jquery - Rails 远程表单不触发 ajax :success handler,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22759060/