访问form_tag上的error_messages

时间:2010-05-14 19:37:35

标签: ruby-on-rails validation forms activerecord

我已经构建了一个自定义表单,用于在has_many :through关系上创建加入模型。模型看起来大致如下:

class Team
  has_many :team_members
  has_many :members, :through => :team_members
end

class Member
  has_many :team_members
  has_many :teams, :through => :team_members
end

class TeamMember
  belongs_to :team
  belongs_to :member
  # and this model has some validations too
end

我建立的表单用于选择团队成员。我不会粘贴表单,但会使用form_tag方法,并且基本上会发送包含member_idsquad_number的哈希数组。然后我用一个看起来大致相似的动作来更新数据库(简化了一下,但是你得到了jist):

@team.transaction do
  @team.team_members = params[:team_members].collect{|tm| @team.team_members.new(tm)}
  if @team.save
    redirect_to ...
  else
    render :action => :members
  end
end

一切都很好,但我正在验证squad_number的唯一性和数字。因此,当任何这些验证失败时,我如何在我的视图中访问它们,以及如何确定它失败的众多成员中的哪一个?

1 个答案:

答案 0 :(得分:1)

我不确定这会给你你想要的东西,但你可以像这样创建你的team_members

team_members = @team.team_members.create(params[:team_members])

并可通过team_members.errors访问错误。