gpt4 book ai didi

ruby-on-rails - 使用带有 Angularjs 客户端表单验证的 Rails 表单时字段名称的问题

转载 作者:行者123 更新时间:2023-12-04 04:45:25 25 4
gpt4 key购买 nike

我正在尝试在我的 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: 'xxx@xx.xx'哪个 rails 无法理解(默认情况下,Rails 期待类似 user: { email: 'xxx@xx.xx' ... } 的东西)

我试图删除 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 - 使用带有 Angularjs 客户端表单验证的 Rails 表单时字段名称的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18283883/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com