【发布时间】:2010-10-15 02:08:02
【问题描述】:
我正在创建一个基本的博客应用程序,当用户尝试提交空白评论时,我遇到了显示错误消息的问题。不是得到一个漂亮的错误消息,而是一个带有正确验证错误的活动记录错误消息。如ActiveRecord::RecordInvalid in CommentsController#create Validation failed: Name can't be blank, Email can't be blank
在我的文章/节目视图中,我有以下代码:
<%= form_for([@article, @article.comments.build]) do |f| %>
<%= render "shared/error_messages", :target => @article %>
<div class="field">
<%= f.label :name %><br />
<%= f.text_field :name %>
</div>
<div class="field">
<%= f.label :email %><br />
<%= f.text_field :email %>
</div>
<div class="field">
<%= f.label :body %><br />
<%= f.text_area :body %>
</div>
<p><%= f.submit %></p>
<% end %>
我的部分错误消息如下所示:
<% if target.errors.any? %>
<div id="error_explanation">
<h2><%= pluralize(target.errors.count, "error") %> prohibited this record from being saved:</h2>
<ul>
<% target.errors.full_messages.each do |msg| %>
<li><%= msg %></li>
<% end %>
</ul>
</div>
<% end %>
我知道答案很简单,但我想不通。
在 cmets 控制器中创建操作:
def create
@article = Article.find(params[:article_id])
@comment = @article.comments.build(params[:comment])
respond_to do |format|
if @comment.save
format.html { redirect_to(@article, :notice => 'Comment was successfully created.') }
format.xml { render :xml => @article, :status => :created, :location => @article }
else
format.html { render :action => "articles/show" }
format.xml { render :xml => @comment.errors, :status => :unprocessable_entity }
end
end
【问题讨论】:
标签: ruby-on-rails validation nested-forms