在Ruby on Rails中渲染validation错误

在模型中说任务 ,我有以下validation

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

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

在我使用的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] = "
    " + @task.errors.full_messages.map{|o| "
  • " + o + "
  • " }.join("") + "
" end redirect_to :back

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

任务模型已经构建并呈现正确的消息。 我想从插件中使用它的function。

这应该工作

 <%= form_for(@task) do |f| %> <% if @task.errors.any? %> 

<%= pluralize(@task.errors.count, "error") %> prohibited this task from being saved:

    <% @task.errors.full_messages.each do |msg| %>
  • <%= msg %>
  • <% end %>
<% end %>
<%= f.submit %>
<% end %>

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