2012-09-09 64 views
1

我有這2種型號:如何爲accepting_nested_attributes_for添加自己的驗證消息?

用戶

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

additional_data

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

和形式:

<%= [email protected] 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 %> 

如果我仙d空格式,則不顯示有關丟失Skype數據的消息。我錯過了什麼?

另外,我想問你,如果我可以根據URL中的變量值驗證additional_data

回答

1

默認情況下,Rails不會顯示內聯錯誤。

您可以使用像我推薦的simple form這樣的插件,也可以通過迭代@user.errors.full_messages來在窗體開頭顯示錯誤。

+0

上面的表格是區域,在那裏打印出錯誤信息。問題是,有關丟失Skype聯繫人的錯誤消息未打印出來。如果我將轉儲'@ user.errors.full_messages',所以沒有Skype消息的消息... – user984621

+0

在您的可訪問屬性列表中是否有'additional_data_attributes'? (attr_accessible:additional_data)? – Robin

1

結帳validates_associated。它驗證關聯的對象是否全部都是有效的。

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

validates_associated :additional_data 

accepts_nested_attributes_for :additional_data 
相關問題