我在rails设备上使用ruby进行身份验证。我需要在客户端验证登录表单。 Devise使用用户[email]作为名称属性值。如何在angularjs ng-show表达式中使用相同的名称?
<form ng-app="" ng-controller="validateCtrl" name="myForm" novalidate>
<input type="text" name="user[email]" ng-model="user" required>
<span ng-show="myForm.user[email].$error.required">Username is required</span>
</form>
用户[email]在angularjs ng-show表达式中不起作用。
答案 0 :(得分:0)
Angular无法访问rails变量上的ruby。
答案 1 :(得分:0)
你可以这样做,这是我使用devise gem和angular 1.3.14
的例子<%= form_for(resource, as: resource_name, url: registration_path(resource_name), html: {name: "profileForm", novalidate: false}) do |f| %>
<div class="field">
<%= f.label :firstname %><br />
<%= f.text_field :firstname, autofocus: true, "ng-model"=>"profile.firstname", required: true %>
<div ng-messages="profileForm['user[firstname]'].$error" class="errors">
<span ng-message="required">Required!</span>
</div>
</div>
<% end %>
注意:您需要在应用中添加angular-messages.js和模块
<!DOCTYPE html>
<html ng-app="myApp">
<head>
<script data-require="angular.js@1.3.14" data-semver="1.3.14" src="https://code.angularjs.org/1.3.14/angular.js"></script>
<script data-require="angular.js@1.3.14" data-semver="1.3.14" src="https://code.angularjs.org/1.3.14/angular-messages.js"></script>
.....
(function() {
var app = angular.module("myApp", ["ngMessages"]);
}());