【问题标题】:validations error messages hash empty验证错误消息散列为空
【发布时间】:2015-02-11 16:13:32
【问题描述】:

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

我有这些验证:

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={}>

【问题讨论】:

  • 您在哪里以及如何调用错误对象?是否在保存错误后调用它?
  • 它在视图中被调用。我粘贴了上面的代码。我的理解是,当它没有通过模型中的验证时,会得到错误消息的哈希值。

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


【解决方案1】:

在您失败的验证分支中,您正在重定向而不是呈现,生成一个对:new_2 操作的新请求并实例化一个新的@part 对象,但没有分配任何值,因此会出错。您需要改用render

改变这一行:

 redirect_to new_v2_path(@part)

到这个:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-22
    • 2018-12-10
    • 1970-01-01
    • 2020-10-28
    • 1970-01-01
    • 2016-03-30
    相关资源
    最近更新 更多