如何为accepts_nested_attributes_for添加自己的验证消息?

时间:2012-09-09 13:10:54

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

我有这两个型号:

用户

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

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

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:1)

结帐validates_associated。它验证关联的对象或对象本身是否都有效。

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

validates_associated :additional_data

accepts_nested_attributes_for :additional_data