2010-09-14 2 views
10

Ich habe 3 Modelle: Benutzer, Swatch + Color. Ein Benutzer hat viele Farbfelder und ein Farbfeld verweist auf eine Farbe.Wie zeigen Sie Validierungsfehler von einem zugeordneten Modell in Rails an?

Benutzer erstellen Farbfelder auf ihrer Profilseite (users/show/id).

Das Farbmodell behandelt die Validierung über das Farbfeldmodell mit accepts_nested_attributes_for :color und validates_associated :color.

Meine Frage ist, wie die farbspezifischen Validierungsfehler auf der Benutzerprofilseite angezeigt werden?

Dies ist der Farbfeld-Controller. Ich zeige momentan nur eine generische Fehlermeldung mit dem Blitz, möchte aber die wirkliche Active :: Fehler aus dem Farbmodell zuzugreifen:

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 

Antwort

24

Sie können versuchen,

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

Ich denke auch, dass mit validates_associated, die @swatch.errors enthält auch Fehler für die Farbe.

+1

@ swatch.errors enthält nur die Fehler aus dem Mustermodell – meleyal

Verwandte Themen