【问题标题】:Client side validation return "Uncaught TypeError: Cannot read property 'presence' of undefined"客户端验证返回“未捕获的类型错误:无法读取未定义的属性‘存在’”
【发布时间】:2012-05-14 08:59:44
【问题描述】:

我在一页上有 2 个模型 User 的表格 - 这就是问题所在,为什么我收到错误 Uncaught TypeError: Cannot read property 'presence' of undefined。当我删除一个 form_for @user 时,Client Side Validations 运行良好。但如果在一页上有两个模型和两个表单 @user

但问题是,我需要在一个页面上有这个模型并形成两次。有什么办法可以解决这个问题吗?

【问题讨论】:

    标签: jquery ruby ruby-on-rails-3 client-side-validation


    【解决方案1】:

    对我来说,您在 cmets 中描述的第二个错误,即 Uncaught TypeError: Cannot read property 'first_user[name]' of undefined 显然是由转置的表单 ID 引起的。

    ClientSideValidation 上有一个关于它的问题:

    https://github.com/bcardarella/client_side_validations/issues/325

    html => { id: 'user_new' } 添加到form_for 调用解决了这个问题。我现在调用这样的方法(从 Devise 的原始模板修改):

    <%= form_for(resource,
      :as => resource_name,
      :validate => true,
      :html => { id: 'user_new' },
      :url => registration_path(resource_name)) do |f| %>
    

    HTH。

    【讨论】:

      【解决方案2】:

      确保为两个用户使用不同的参数标识符:

      <!-- First form for user -->
      <%= form_for(@user, :as => :first_user) do |f| %>
        ...
      <% end %>
      
      <!-- Second form for user on the same page -->
      <%= form_for(@user, :as => :second_user) do |f| %>
        ...
      <% end %>
      

      【讨论】:

      • 感谢您的回复。我尝试使用标识符,但是当我这样做时,我收到了错误消息(JS 错误)Uncaught TypeError: Cannot read property 'first_user[name]' of undefined
      猜你喜欢
      • 1970-01-01
      • 2021-12-22
      • 2015-01-06
      • 2017-07-26
      • 2019-02-26
      • 2021-12-25
      • 1970-01-01
      相关资源
      最近更新 更多