Как показать ошибки валидации из связанной модели в Rails? - PullRequest
10 голосов
/ 15 сентября 2010

У меня 3 модели: Пользователь, Swatch + Цвет. У пользователя много образцов, и образец ссылается на цвет.

Пользователи создают образцы на странице своего профиля (users / show / id).

Цветовая модель обрабатывает проверку с помощью модели образцов с accepts_nested_attributes_for :color и validates_associated :color.

Мой вопрос: как отобразить ошибки проверки цвета на странице профиля пользователя?

Это контроллер образцов. В настоящее время я просто показываю общее сообщение об ошибке со вспышкой, но хотел бы получить доступ к реальному 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 Ответ

24 голосов
/ 15 сентября 2010

Вы можете попробовать

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

Я также думаю, что с validates_associated, @swatch.errors также содержит ошибки для цвета.

...