Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 嵌套字段上的客户端验证未生成有效性_Ruby On Rails_Ruby On Rails 3_Devise_Client Side Validation - Fatal编程技术网

Ruby on rails 嵌套字段上的客户端验证未生成有效性

Ruby on rails 嵌套字段上的客户端验证未生成有效性,ruby-on-rails,ruby-on-rails-3,devise,client-side-validation,Ruby On Rails,Ruby On Rails 3,Devise,Client Side Validation,我有应用程序rails,使用客户端验证gem和design来验证design注册表单 //account.rb has_one :user validates :username, presence: true, uniqueness: true //user.rb belongs_to :account validates :email, presence: true, uniqueness: true //new.html.erb <%= form_for(@user, :ur

我有应用程序rails,使用客户端验证gem和design来验证design注册表单

//account.rb

has_one :user
validates :username, presence: true, uniqueness: true
//user.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 %>
注册路径(资源名称),:validate=>true)do | f |%>
真do |内部|形式|%>

验证可以很好地处理电子邮件字段,但用户名无效。。 帮帮我,谢谢

更新--validate show,但这不是嵌套表单

更改:account为@account

<%= f.fields_for :account, :validate => true do |inner_form|%>
true do|内部|u形式|%>

true do|内部|u形式|%>
提交时,我得到了错误 应为帐户(#27129348),已获得ActiveSupport::HashWithInferenceAccess(#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">

发行

用户\帐户\属性\用户名

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

工作

用户\帐户\用户名


用户[帐户][用户名]

我们找到了解决该问题的分支机构

我刚刚用以下行更新了我的文件:

gem 'client_side_validations', github: "jeroenj/client_side_validations", :branch => "4-0-deeply-nested-forms"

希望您能为当前的
DavyJonesLocker/client\u-side\u验证
版本(Rails 4.2)工作,修复嵌套表单只是在替换行(在
Rails.validations.js
中放置的
validateForm
函数中):

使用一些更好的regexp,它将从
name
字符串中删除所有
[id]
[new\u id]
。以下是在
jeroenj/client\u side\u validations
上介绍的一个解决方案:

name = name.replace(/\[((?:new_)?\d+|[0-9a-f]{24})\]/g, "[]");
这很好(只要你有健全的属性名称),但可能有一些更好的方法来做到这一点。如果有人擅长编写JS正则表达式,请帮助改进它。我会尝试尽快完成当前的项目,但我肯定不是一个regexp硕士

重要:
更重要的是,在当前的
客户端验证
版本中,您必须注释掉围绕上述regexp指令的
if(…){}
。这只是快速修复,
如果在某个时候可能需要,但我还没有找到它的任何用法。

什么不起作用?验证未强制执行,或错误消息未显示?我认为您的主要问题是设置
的方式,请告诉我这是否解决了问题。@Andrew no show错误消息,但验证未生成..@user532339未工作,同一问题
name = name.replace(/\[[\da-z_]+\]\[(\w+)\]$/g, "[][$1]");
name = name.replace(/\[((?:new_)?\d+|[0-9a-f]{24})\]/g, "[]");