fields_for belongs_to model,自定义嵌套字段 - 不显示表单错误消息

时间:2011-02-25 01:04:21

标签: ruby-on-rails

当我为订单所属的发件人创建嵌套字段时,如果表单填写不正确,我将无法看到任何错误消息。

orders.rb - model

class Order < ActiveRecord::Base
    belongs_to :sender, :class_name => "Client"
    belongs_to :recipient, :class_name => "Client"
end

clients.rb - model

class Client < ActiveRecord::Base
    validates_presence_of :first_name
end

new.erb.html - 表单

<% form_for(@order) do |f| %>
  <%= f.error_messages %>
...
    <% fields_for :sender do |s| %>
      <%= s.error_messages %>
      <p>
        <%= s.label :telephone, "Phone number" %><br />
      </p>

...

我没有使用accepts_nested_attributes_for,因为它对我的belongs_to模型不起作用。 我已经创建了所需的表单字段和控制器,用于保存我需要的数据。

如何显示发件人和收件人的错误消息?

我正在使用Ruby On Rails 2.3.11

提前致谢。

2 个答案:

答案 0 :(得分:0)

看一下类似的帖子,我想它可以回答你的问题:http://jedschneider.posterous.com/validation-messages-on-associated-attributes

答案 1 :(得分:0)

如果要在保存订单时验证客户端,可以执行以下操作:

class Order < ActiveRecord::Base
  belongs_to :sender, :class_name => "Client", :validate => true
  belongs_to :recipient, :class_name => "Client", :validate => true
end

如果您在保存客户端时尝试验证订单,则可以执行以下操作:

class Client < ActiveRecord::Base
  has_many :orders, :validate => true
end

如果由于某些原因那些不适合你的话,如果你解释原因,将会有所帮助。您提到您不能使用accepts_nested_attributes_for,但我认为您仍在使用关联 - 否则我不确定您将验证什么。