在模型中说任务,我有以下验证
validates_presence_of :subject, :project, :user, :status
如何使用其他控制器呈现这些验证的错误消息。
我正在使用的CustomController内部,
Task.create(hash)
在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
如何向用户呈现错误消息。
已构建任务模型并呈现正确的消息。我想从插件中使用它的功能。
答案 0 :(得分:7)
这应该有效
<%= 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 %>
答案 1 :(得分:1)
如果您正在谈论在编辑页面上显示错误(即:在表单中),那么请考虑使用simple_form gem。它会在没有编码的情况下为您显示错误。只需将form_for
替换为simple_form_for
,魔法就会开始......