2010-09-14 964 views
10

Tengo 3 modelos: Usuario, Swatch + Color. Un usuario tiene muchas muestras y una muestra hace referencia a un color.¿Cómo se muestran los errores de validación de un modelo asociado en Rails?

Los usuarios crean muestras en su página de perfil (users/show/id).

El modelo de color maneja la validación a través del modelo de muestra con accepts_nested_attributes_for :color y validates_associated :color.

Mi pregunta es, ¿cómo mostrar los errores de validación específicos del color en la página del perfil de usuario?

Este es el controlador de muestras. Yo actualmente acaba de mostrar un mensaje de error genérico con el flash, pero me gustaría tener acceso a la verdadera ActiveRecord :: errores del modelo de color:

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 

Respuesta

24

Puede intentar

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

También creo que con validates_associated, @swatch.errors también contiene errores de color.

+1

@ swatch.errors solo contiene los errores del modelo de muestra – meleyal

Cuestiones relacionadas