如何在Rails中显示关联模型的验证错误?

时间:2010-09-14 21:01:30

标签: ruby-on-rails validation activerecord

我有3个型号:User,Swatch + Color。用户有许多样本,并且样本引用颜色。

用户在个人资料页面(users / show / id)上创建色板。

颜色模型使用accepts_nested_attributes_for :colorvalidates_associated :color通过色板模型处理验证。

我的问题是,如何在用户个人资料页面上显示特定于颜色的验证错误?

这是样本控制器。我目前只是用flash显示一般的错误消息,但想从颜色模型中访问真正的ActiveRecord :: Errors:

class SwatchesController < ApplicationController

  before_filter :authenticate

  def create 
    color = Color.find_or_create_by_value(params[:swatch][:colors][:value])    
    @swatch = current_user.swatches.build(:color_id => color.id)

    if @swatch.save
      flash[:success] = "Swatch created"
      redirect_to user_path(current_user)
    else
      flash[:error] = "Error"
      redirect_to user_path(current_user)              
    end
  end

end

1 个答案:

答案 0 :(得分:24)

您可以尝试

flash[:error] = color.errors.empty? ? "Error" : color.errors.full_messages.to_sentence

我还认为,对于validates_associated@swatch.errors也包含颜色错误。