11

在模型中说Task,我有以下验证

 validates_presence_of :subject, :project, :user, :status

如何使用其他控制器为这些验证呈现错误消息。

在我使用的 CustomController 内部,

Task.create(hash)

在哈希中传递 nil 值会产生以下错误,

 ActiveRecord::RecordInvalid in CustomController#create

 Validation failed: Subject can't be blank

控制器创建操作中的代码

@task = Task.create(hash)
if @task.valid?
   flash[:notice] = l(:notice_successful_update)
else
    flash[:error] = "<ul>" + @task.errors.full_messages.map{|o| "<li>" + o + "</li>" }.join("") + "</ul>"
end
redirect_to :back

如何向用户呈现错误消息。

任务模型已经建立,它会呈现正确的消息。我想从插件中使用它的功能。

4

2 回答 2

8

这应该工作

<%= form_for(@task) do |f| %>
  <% if @task.errors.any? %>
    <div id="error_explanation">
      <h2><%= pluralize(@task.errors.count, "error") %> prohibited this task from being saved:</h2>

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

  <div class="actions">
    <%= f.submit %>
  </div>
<% end %>
于 2012-05-10T10:16:00.563 回答
1

如果您正在谈论在编辑页面上显示错误(即:在表单中),那么请考虑使用simple_form gem。它会在没有一行代码的情况下为您显示错误。只需替换form_forsimple_form_for,魔法就会开始......

于 2012-05-10T10:11:40.523 回答