ruby-on-rails - 将 Rails 表单与 Angularjs 客户端表单验证一起使用时出现字段名称问题

标签 ruby-on-rails angularjs client-side-validation form-fields

我正在尝试在 Rails 项目中使用 Angularjs 进行客户端表单验证。我使用内置 ng-show 指令来显示表单字段的错误。代码很简单:

<%= form_for(resource, :as => resource_name, :url => registration_path(resource_name), 
                              html: { novalidate: true, name: 'signUpForm'}) do |f| %>
  ...

  <%= f.email_field :email, :'ng-model'=>'user.email', name: 'uEmail', 
                              autofocus: true, required: true %>
  ...

  <div ng-show="signUpForm.uEmail.$dirty && signUpForm.uEmail.$invalid">
    <span ng-show="signUpForm.uEmail.$error.required">
      <small class="error">Tell us your email.</small>
    </span>
    <span ng-show="signUpForm.uEmail.$error.email">
      <small class="error">This is not a valid email.</small>
    </span>
  </div>
<% end %>

这给了我一个很好的客户端验证,但问题是,因为 Rails 默认情况下给出一个表单字段名称,如 model[attr]就我而言user[email]

但是,在这里我给我的电子邮件字段命名 uEmail提交表单后的 post 请求中的参数将为 uEmail: '<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="512929291129297f2929" rel="noreferrer noopener nofollow">[email protected]</a>'哪个 Rails 无法理解(默认情况下 Rails 期望类似 user: { email: '<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="dea6a6a69ea6a6f0a6a6" rel="noreferrer noopener nofollow">[email protected]</a>' ... } )

我尝试删除 name: 'uEmail'并回退到 Rails 默认 user[email]并在ng-show中使用类似的东西指令

<span ng-show="signUpForm.user[email].$error.required">

但这行不通,有人知道如何解决这个问题吗?

btw: rails -v 4.0 Angularjs version: 1.0.7

最佳答案

我不知道你是否找到了这个问题的解决方案,我也面临着同样的问题,我发现一个问题已经在 GitHub 上打开了:

https://github.com/angular/angular.js/issues/1201

解决方案非常简单,根据您的情况,您只需执行以下操作:

<span ng-show="signUpForm['user[email]'].$error.required">

关于ruby-on-rails - 将 Rails 表单与 Angularjs 客户端表单验证一起使用时出现字段名称问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18283883/

相关文章:

javascript - 如何使用 Angular JS 打开 Bootstrap 模式?

asp.net-mvc - ASP.Net Mvc 定长字符串数据注解

ruby-on-rails - MongoDB 和 Rails : How to create Index

ruby-on-rails - Rails 3 - Delayed_Job (collectiveidea),试图延迟邮件程序 - 错误 : NoMethodError (undefined method `delay' for UserMailer:Class)

ruby-on-rails - 为什么花括号 on Rails 回调?

javascript - github 项目页面资源解释为脚本,但使用 MIME 类型 text/htm 传输

javascript - Angulartics 不会跟踪我在按钮或链接上的事件

ruby-on-rails - 将 .js Controller 请求渲染为 html

jquery - 仅当字段可见时才需要验证

validation - Asp.Net MVC EnableClientValidation 不起作用