【问题标题】:How to add own validation message for accepts_nested_attributes_for?如何为 accept_nested_attributes_for 添加自己的验证消息?
【发布时间】:2012-09-09 13:10:53
【问题描述】:

我有这两个模型:

用户

has_one :additional_data, :dependent => :destroy
accepts_nested_attributes_for :additional_data

附加数据

belongs_to :user
validates :skype, :presence => {:message => 'cannot be blank.'}

和形式:

<%= form_for@user do |f| %>
  <p>
    <%= f.label :email %><br />
    <%= f.text_field :email %>
  </p>
  <%= f.fields_for :additional_data do |ad| %>
        <p>
          <%= ad.label :skype, "Skype" %><br />
          <%= ad.text_field :skype %>
        </p>
  <% end %>
<% end %>

如果我发送空表单,则不会显示有关丢失 Skype 数据的消息。我错过了什么?

另外,我想问你,我是否可以根据 URL 中的变量值验证 additional_data

【问题讨论】:

    标签: ruby-on-rails validation nested-attributes


    【解决方案1】:

    默认情况下,Rails 不会显示内联错误。

    您可以使用我推荐的simple form 之类的插件,也可以通过迭代@user.errors.full_messages 在表单开头显示错误。

    【讨论】:

    • 表格上方是打印错误信息的区域。问题是,关于丢失 Skype 联系人的错误消息没有打印出来。如果我转储@user.errors.full_messages,那么就没有丢失Skype的消息了...
    • additional_data_attributes 在您的可访问属性列表中吗? (attr_accessible :additional_data)?
    【解决方案2】:

    查看validates_associated。它验证关联的一个或多个对象本身是否都有效。

    # user.rb
    has_one :additional_data, :dependent => :destroy
    
    validates_associated :additional_data
    
    accepts_nested_attributes_for :additional_data
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-01-08
      相关资源
      最近更新 更多