2010-01-19 5 views
0

J'ai des articles, des profils et des commentaires. Il existe une association polymorphe entre les articles/profils et les commentaires appelés commentables.assosication polymorphe Rails - sur l'erreur de validation afficher l'action parent show avec le message flash

En cas de succès en créant un nouveau commentaire je retourne à l'objet parent commentable avec un flash de succès et je voudrais faire la même chose avec l'erreur appropriée sur les erreurs de validation.

Que devrais-je transmettre au rendu?

def create 
    @commentable = find_commentable 
    @comment = @commentable.comments.build(params[:comment]) 
    if @comment.save 
    flash[:notice] = "Successfully created comment." 
    redirect_to @commentable 
    else 
    render '??path_to_commentable_object_show??' 
    end 
end 

Je suppose que je pourrais construire le chemin en saisissant le nom de classe et commentable ... mais en minuscule qui semble maladroit.

+0

Avez-vous trouvé une solution pour cela? J'ai le même problème et je ne peux pas trouver comment montrer les erreurs de validation du modèle associé. – Peter

Répondre

0

Construire le chemin à partir de la classe commentable est généralement ce que je ferais.

En fait, vous pouvez construire le nom de l'aide de l'itinéraire de chemin, puis l'envoyer au contrôleur

path = "edit_"+commentable.class.to_s.dasherize.downcase+"_path 
send(path.intern) 
+0

J'ai besoin de charger l'objet commentable, puis de rendre la page d'affichage pour cela ... alias les ramener à la page d'affichage de l'article qu'ils ont essayé de commenter, afficher le message d'erreur flash et avoir la valeur d'origine entrer. Pour la version non polymorphe que je pouvais faire: @article = @ comment.article Rendu 'article/spectacle' – SWR

Questions connexes