ruby-on-rails - Rails 客户端验证不适用于简单的表单关联

标签 ruby-on-rails ruby simple-form client-side-validation

我有一个模型用户

class User < ActiveRecord::Base
  validates :goal, :presence => true, :on => :update
  belongs_to :goal, :class_name => Goal, :foreign_key => "goal_id"
  ...
end

在我的表格上

<%= simple_form_for @users,:remote => true, :url => registration_path(resource_name), :html => { :method => :put, :multipart => true }, :validate => true do |f| %>
 <%= f.association :goal,:label => "My overall goal is clearing", :input_html => {:class => 'goals'},:include_blank => true %>

但是 rails 客户端验证不接受关联验证,它让我为目标填空。

rails 客户端验证 gem 是否适用于简单的表单关联?

我的 html 页面上有以下脚本

if (window.ClientSideValidations == undefined) window.ClientSideValidations = {};
if (window.ClientSideValidations.forms == undefined) window.ClientSideValidations.forms = {};
window.ClientSideValidations.forms['edit_user_14'] = {
    "type": "SimpleForm::FormBuilder",
    "error_class": "error",
    "error_tag": "span",
    "wrapper_error_class": "field_with_errors",
    "wrapper_tag": "div",
    "wrapper_class": "input",
    "wrapper": "default",
    "validators": {
        "user[mobile_number]": {
            "format": [{
                "message": "should be 10 digits",
                "with": /^\d{10}$/i
            }]
        },
        "user[profile_pic]": {
            "integrity": [{
                "message": "translation missing: en.activerecord.errors.models.user.attributes.profile_pic.integrity"
            }],
            "processing": [{
                "message": "translation missing: en.activerecord.errors.models.user.attributes.profile_pic.processing"
            }],
            "download": [{
                "message": "translation missing: en.activerecord.errors.models.user.attributes.profile_pic.download"
            }],
            "format": [{
                "message": "Wrong file format",
                "with": /\.(gif|jpeg|jpg|png)$/i,
                "allow_blank": true
            }]
        }
    }
};

最佳答案

这里的关键区别是使用 validates :goal_id ... 而不是 validates :goal ...

因为这是一个关联,所以您的 ActiveRecord 模型(以及底层数据存储中)的真实属性是 goal_id。这就是 client_side_validations 默认寻找的内容。

关于ruby-on-rails - Rails 客户端验证不适用于简单的表单关联,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14082609/

相关文章:

ruby-on-rails - 如何将此 form_tag 助手转换为 simple_form_for 调用?

ruby - 在本地访问基于 ruby​​ 的 gem 的文档的简单方法是什么?

ruby gem : Uninitialized constant FactoryBot

ruby-on-rails - simple_form 'form-inline' 不工作

ruby-on-rails - Rails PayPal自适应

ruby-on-rails - 如何检查rails 3中字段的字段类型是什么

ruby-on-rails - rails simple_nested_form_for fields_for 错误数量的参数

ruby-on-rails - 在 as_json 中订购嵌套关联

mysql - 迁移错误 - 错误 : You have an error in your SQL syntax; check the manual that corresponds

javascript - 如何防止仅在一个 Rails Controller 上加载 css 和 js 表?