ruby-on-rails - AngularJS ng-submit 在 Rails 生成的表单上失败

标签 ruby-on-rails forms devise angularjs

我正在使用 Rails 服务器(使用 Devise 进行身份验证)和 AngularJS 客户端。我已将 Rails 生成的表单添加到我的客户端页面,添加 ng-submit Angular 指令,如下所示:

<%= form_for("user",
    :url => user_session_path,
    :html => { "ng-submit" => "doSignIn()" }) do |f| %>

这会生成一个具有 actionng-submit 属性的表单,如下所示:

<form accept-charset="UTF-8" action="/users/sign_in" method="post" ng-submit="doSignIn()">

在封闭的 div 中的 Controller 定义中,我有一个 doSignIn 函数,目前它不执行任何操作:

$scope.doSignIn = function() {
    console.log($scope.email, $scope.password);
};

$scope.email$scope.password 使用 ng-model 绑定(bind)。或者,至少,它们应该是 - 我不能说,因为单击提交总是导致被定向到 /users/sign_in。我的印象是使用 ng-submit 会阻止表单重定向用户。我也尝试过将 ng-click 添加到提交按钮,使用相同的方法,它也使用 doSignIn() 方法,我什至尝试过传递它事件并调用 event.preventDefault()。似乎没有什么能阻止我被重定向。

我的最终目标是使用 AJAX 进行登录,但就目前而言,只要证明我可以停止自动重定向就很棒了!

最佳答案

I was under the impression that using ng-submit would prevent the form from redirecting the user.

如果 <form> 这只是一个正确的假设没有 action与之关联的属性。当你使用 Rails form_for助手,它生成一个 action当您指定 url 时为您服务属性。

要防止提交表单,您必须遵循上述 Abraham P 的建议,并且 return false;您不希望提交表单的地方。

关于ruby-on-rails - AngularJS ng-submit 在 Rails 生成的表单上失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14216724/

相关文章:

ruby-on-rails - 如何使用 STI 建立 ActiveRecord 关联

javascript - 让用户在表单中输入年龄的最佳方式是什么?

ruby-on-rails - 添加 rails link_to、mail_to 后,haml 删除点之前的空格

ruby-on-rails - RVM gem 权限错误

html - 使输入元素(类型 ="text")处理多行文本

javascript - 未调用表单 'onsubmit'

ruby-on-rails - 使用 POST/sign_in 登录。不支持 GET。 Omniauth-facebook

ruby-on-rails - rails 4 :Error in setting up SignIn Page as root page using Devise

javascript - Turbolinks 并在另一个浏览器选项卡中注销

ruby-on-rails - 使用不同 API 结果的设计模式