我在使用 Rails 以 AJAX 方式解决表单处理时遇到了困难。我将尝试解释我所拥有的不同部分,以及我有疑问的地方:
这是我的new.html.erb的样子:
<%= simple_form_for(resource, :as => resource_name, :url => registration_path(resource_name), :remote => true) do |f| %>
<%= f.input :email, :label => false, :placeholder => 'Enter Email' %>
<%= f.submit "Step inside", :id => 'invitation_button' %>
<% end %>
<div id="request_invite">
</div>
如您所见,我有一个:remote => true
,所以提交是通过 AJAX 完成的。另外,我有一个空容器(#request_invite),其中将填充一个部分,以防提交成功。
这是我的registrations_controller.rb (创建方法)的样子:
def create
build_resource
if resource.save
if resource.active_for_authentication?
sign_in(resource_name, resource)
respond_with resource, :location => after_sign_up_path_for(resource)
else
expire_session_data_after_sign_in!
respond_with resource, :location => after_inactive_sign_up_path_for(resource)
end
else
clean_up_passwords resource
respond_with resource
end
end
我的疑惑就在这里。我应该写什么才能让JS知道提交成功与否。如果成功,我想将调用的部分渲染_thank_you.html.erb
到#request_invite 容器中。如果不成功,我想在表单中显示错误。
这是我处理 AJAX 响应的 Javascript 文件:
$('document').ready(function() {
$("#new_user").on('ajax:success', function(data, status, xhr)
{
alert("test");
})
});
现在 alert("test") 总是出现,因为我没有办法知道是否成功。
非常感谢,我希望我能很好地解释自己。