显示来自另一个控制器的验证错误消息

时间:2009-06-16 18:06:25

标签: ruby-on-rails ruby

我在views / users / show.html.erb

中有表单
<% form_for [@user,Wall.new] do |f| %>
<%= f.error_messages %>
<p>
<%= f.label :message %><br />
<%= f.text_area :message,:rows=>4 %>
</p>
<%= f.hidden_field :sender_id,:value=>current_user.id %>
<p><%= f.submit "Submit" %></p>
<% end %>

我在Models / wall.rb中有这个验证方法

验证:是朋友吗?

def isfriend?
errors.add(:message,'You have to be a friend to send message')  if !Friendship.find(:first,
:conditions=>"requester_id=#{self.sender_id} and accepter_id=#{self.receiver_id} and status='accepted'
or requester_id=#{self.receiver_id} and accepter_id=#{self.sender_id} and status='accepted'")
 end

一切都很好验证正在工作并保存禁用它也会提供错误信息,但它不正常的方式给出这样的信息

WallsController中的ActiveRecord :: RecordInvalid #create

验证失败:消息您必须是发送消息的朋友

RAILS_ROOT:C:/ Users / MaDOnos / Documents / NetBeansProjects / tttttt

如何以合理的方式显示此错误消息。

2 个答案:

答案 0 :(得分:1)

看起来你正在打电话保存! (或创建!)而不是保存(或创建)。前者会像你一样引发异常,后者将返回false,并在对象上显示验证错误。

答案 1 :(得分:0)

我看不出你的问题是什么? AR保存失败,RecordInvalid就像它应该的那样,你得到了你提供的验证信息。