在这种情况下,知道为什么消息哈希会为空?
我有这些验证:
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={}>
答案 0 :(得分:1)
在失败的验证分支中,您将重定向而不是呈现,生成对:new_2
操作的新请求并实例化新的@part
对象,不分配任何值,从而导致错误。您需要改为使用render
。
更改此行:
redirect_to new_v2_path(@part)
对此:
render :new # or new_v2 or whatever action name you have.