gpt4 book ai didi

ruby-on-rails - 嵌套字段的客户端验证不生成验证

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

我有应用程序 rails 并使用 client_side_validations gem 和 Devise 来验证设备注册表单

//帐户.rb

has_one :user
validates :username, presence: true, uniqueness: true

//用户.rb
 belongs_to :account
validates :email, presence: true, uniqueness: true

//new.html.erb
<%= form_for(@user, :url => registration_path(resource_name), :validate => true) do |f| %>

<%= f.fields_for :account, :validate => true do |inner_form|%>
<div class="field">
<%= inner_form.label :username, "Username" %><br />
<%= inner_form.text_field :username %>
</div>
<% end %>

<div class="field">
<%= f.label :email, "Email" %>
<%= f.email_field :email %>
</div>
<div>
<%= f.submit "Sign up" %>
</div>

<% end %>

验证对电子邮件字段工作正常,但对于用户名无效..
帮帮我,,,谢谢

更新 ---验证显示,但这不是嵌套形式

将 :account 更改为 @account
<%= f.fields_for :account, :validate => true do |inner_form|%>


<%= f.fields_for @account, :validate => true do |inner_form|%>

提交时出现错误
Account(#27129348) 预期,得到 ActiveSupport::HashWithIndifferentAccess(#26695068)

当验证不起作用时,html 代码
<input id="user_account_attributes_username" name="user[account_attributes][username]" size="30" type="text" data-validate="true">

验证有效
<input id="user_account_username" name="user[account][username]" size="30" type="text" data-validate="true">

问题

user_account_attributes_username

用户[帐户属性][用户名]

工作过

user_account_username

用户[帐户][用户名]

最佳答案

当前 DavyJonesLocker/client_side_validations版本(Rails 4.2)修复嵌套表单只是替换行(在 rails.validations.js.coffee 中放置在 validateForm 函数中):

name = name.replace(/\[[\da-z_]+\]\[(\w+)\]$/g, "[][$1]");
使用一些更好的正则表达式,将消除每个 [ids][new_ids]来自 name字符串。这是 jeroenj/client_side_validations 上提出的一种解决方案:
name = name.replace(/\[((?:new_)?\d+|[0-9a-f]{24})\]/g, "[]");
这很好(只要你有合理的属性名称)但可能有一些更好的方法来做到这一点。如果有人擅长编写 JS 正则表达式,请帮助改进它。我会在完成当前项目后立即尝试,但我绝对不是正则表达式大师。
重要:
现在还有什么 client_side_validations版本你要注释掉 if(...) { }它围绕着提到的正则表达式指令。这只是快速修复, if在某些时候可能是必要的,但我还没有找到它的任何用途。

关于ruby-on-rails - 嵌套字段的客户端验证不生成验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13329248/

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