当前位置 : 主页 > 编程语言 > ruby >

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

来源:互联网 收集:自由互联 发布时间:2021-06-23
我正在使用Rails服务器(使用Devise进行身份验证)和AngularJS客户端.我已经将Rails生成的表单添加到我的客户端页面,添加了ng-submit Angular指令,如下所示: %= form_for("user", :url = user_session_path,
我正在使用Rails服务器(使用Devise进行身份验证)和AngularJS客户端.我已经将Rails生成的表单添加到我的客户端页面,添加了ng-submit Angular指令,如下所示:

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

这会生成一个包含action和ng-submit属性的表单,如下所示:

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

在封闭div中控制器的定义中,我有一个doSignIn函数,此时不执行任何操作:

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

$scope.email和$scope.password使用ng-model绑定.或者,至少,它们应该是 – 我无法分辨,因为点击提交总是导致被定向到/ 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>这只是一个正确的假设.没有与之关联的动作属性.当您使用Rails form_for帮助程序时,它会在您指定url属性时为您生成一个操作.

为了防止提交表格,你必须遵循上面的亚伯拉罕P的建议,并返回虚假;你不希望表单提交的地方.

网友评论