Dislpaying validation errors from one one model to view of another.

Hi,

I have a model,

class UserComment
belongs_to :user
validates :player_id, :presence => true
validates :comment, :uniqueness => { :scope => :player_id}

partial “comments” from User.
= simple_form_for @user, :html => {:class => ‘comment-form’}, :remote => true do |f|
%fieldset
= f.fields_for :user_comments do |uac|
= uac.input :comment, :as => :text, :input_html => {:rows => 5, :width => 5}
.comment-action
= uac.button :submit, :value => ‘Comment’, :class => ‘btn’

When I click on submit button and if the validation receives any error it does not display it on the view. I am not sure where the problem is.

It looks like you’re not outputting your errors on your view.

If you go to your terminal/command line and try the following:

type ‘rails c’ to enter the rails console. Here we go do a quick bit of testing to see if the errors are being captured.

type ‘user = User.new’, this’ll output a new User object.

type ‘user.errors’ If it returns Nil then you have a different problem otherwise it’s a case of just displaying your errors.

In your view you could do something like…

<% if @user.errors %>

There was an error, please see below.

    <% @user.errors.full_messages.each do | msg | %>

  • <%= msg %>
  • <% end %>

<% end %>

I hope that helps.

It looks like you’re not outputting your errors on your view.

If you go to your terminal/command line and try the following:

type ‘rails c’ to enter the rails console. Here we go do a quick bit of testing to see if the errors are being captured.

type ‘user = User.new’, this’ll output a new User object.

type ‘user.errors’ If it returns Nil then you have a different problem otherwise it’s a case of just displaying your errors.

In your view you could do something like…

<% if @user.errors %>

There was an error, please see below.

<% @user.errors.full_messages.each do | msg | %>

  • <%= msg %>
  • <% end %>

    <% end %>

    I hope that helps.

    I was sending the errors to the view from the controller. I found out that since the errors where not from the base model (User) so it wasn’t displaying them. Once I added them to the base using errors.add(:base, “Error”), it started displaying the errors.