验证错误消息哈希为空

时间:2015-02-11 16:13:33

标签: ruby-on-rails validation error-handling rails-models

在这种情况下,知道为什么消息哈希会为空?

我有这些验证:

validates_presence_of :part_number
validates_uniqueness_of :part_number

一个简单的创建:

if @part.save
  puts 'saved'
  redirect_to new_v2_path
else
  puts 'not saved'
  flash[:error] = "There was an error while updating the part."
  redirect_to new_v2_path(@part)
end

在视图中:

<% if @part.errors.any? %>
  <div id="error_explanation" style="color: red;">
    <h2><%= pluralize(@part.errors.count, 'error') %> :</h2>

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

错误对象:

...l, flush_part: nil>, @messages={}>

1 个答案:

答案 0 :(得分:1)

在失败的验证分支中,您将重定向而不是呈现,生成对:new_2操作的新请求并实例化新的@part对象,不分配任何值,从而导致错误。您需要改为使用render

更改此行:

 redirect_to new_v2_path(@part)

对此:

 render :new # or new_v2 or whatever action name you have.