2015-09-05 2 views
1

У меня есть article и comment модель.Как отображать ошибки из связанной модели?

Я хочу написать это:

= form_for ([@article, @article.comments.build]) do |f| 
    - if @article.comments.errors.any? 
    %h4 Errors 
    %ul 
     - @article.comments.errors.full_message do |message| 
     %li= message 

Но я получаю сообщение об ошибке:

undefined method `errors' for Comment::ActiveRecord_Associations_CollectionProxy:0x9a4a020

Article имеет много комментариев и comment принадлежит к статье.

Я хочу показать ошибку проверки для комментариев.

EDIT: Моя comment модель:

class Comment < ActiveRecord::Base 
    belongs_to :article 
    validates :author, presence: true, length: { minimum: 3 } 
    validates :body, presence: true, length: { minimum: 5 } 
end 
+0

'@ article.comments.first.'? –

+0

Теперь нет ошибки. Но ошибки проверки не отображаются, когда должны быть (в модели у меня есть проверка наличия и т. Д.). – Jensky

+0

показать подтверждение, которое вы написали внутри модели –

ответ

1

Вы не можете вызвать ошибки в коллекции как @article.comments.

В контроллере создайте переменную экземпляра для комментариев:

def new 
    @comment = @article.comments.build 
end 

def create 
    @comment = @article.comments.build 
    respond_to do |format| 
    if @comment.save 
    # handle save 
    else 
    format.html { render :new } 
    format.json { render json: @comment.errors, status: :unprocessable_entity } 
    end 
    end 
end 

Затем обновите форму:

= form_for ([@article, @comment]) do |f| 
    - if @comment.errors.any? 
    %h4 Errors 
    %ul 
     - @comment.errors.full_message do |message| 
     %li= message 
Смежные вопросы