我在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
如何以合理的方式显示此错误消息。
答案 0 :(得分:1)
看起来你正在打电话保存! (或创建!)而不是保存(或创建)。前者会像你一样引发异常,后者将返回false,并在对象上显示验证错误。
答案 1 :(得分:0)
我看不出你的问题是什么? AR保存失败,RecordInvalid就像它应该的那样,你得到了你提供的验证信息。