2011-10-04 82 views
1

当我发错邮件,确认无法通过,但在视图中的错误信息不显示:(导轨 - 错误信息不能显示

我在车型:

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 

在次(invitation_to_groups/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 %> 

(...)

回答

2

问题是您在控制器中使用redirect_toelse。所以你要采取新的行动,在这个行动中你有InvitationToGroup.new。所以你建立新的对象没有错误;)你需要使用render方法instesd。

PS。你应该真的考虑使用“formtastic”。它会在视图中隐藏你的代码。请观看这两个栏目:http://railscasts.com/episodes/184-formtastic-part-1http://railscasts.com/episodes/185-formtastic-part-2

+0

+1对于一个好的答案和支持formtastic作为一个不错的选择。 – jdl

+0

Thx for answer :) – justi