Rails - сообщения об ошибках не могут быть отображены - PullRequest
1 голос
/ 04 октября 2011

Когда я отправляю неправильное письмо, проверка не может пройти, но сообщения об ошибках в представлениях не отображаются: (

У меня в моделях:

validate :recipient_not_have_invitation, :notice => "That user have already invitation"

def recipient_not_have_invitation
  errors.add :notice, 'That user have already invitation' if InvitationToGroup.find_by_recipient_email_and_group_id(recipient_email, group_id)
end

в контроллере:

(...)

if @invitation_to_group.save
  Mailer.invitation_to_group(@invitation_to_group).deliver
  redirect_to root_url, :notice => "Successfully send invitation to user #{@invitation_to_group.recipient_email}"
else
  redirect_to new_invitation_to_group_path(:group_id =>  @invitation_to_group.group_id)
end

В представлениях (приглашение_группы / new.html.erb)

<h2>New Invitation to group </h2>
<% if notice %>
  <p id="notice"><%= notice %></p>
<% end %>

<%= form_for @invitation_to_group do |f| %>
   <% if @invitation_to_group.errors.any? %>
    <div id="error_explanation">
      <h2><%= pluralize(@invitation_to_group.errors.count, "error") %> prohibited this user from being invitation:</h2>

      <ul>
      <% @invitation_to_group.errors.full_messages.each do |msg| %>
        <li><%= msg %></li>
      <% end %>
      </ul>
    </div>
  <% end %>

(...)

1 Ответ

2 голосов
/ 04 октября 2011

Проблема в том, что вы используете redirect_to после else в вашем контроллере. Итак, вы идете к новому действию, и в этом действии у вас есть InvitationToGroup.new. Таким образом, вы строите новый объект без ошибок;) Вам нужно использовать render метод instesd.

PS. Вы действительно должны рассмотреть возможность использования "formtastic". Это улучшит ваш код в представлениях. Пожалуйста, посмотрите эти два сообщения: http://railscasts.com/episodes/184-formtastic-part-1 и http://railscasts.com/episodes/185-formtastic-part-2

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...