无法弄清楚如何让验证错误显示在创建或编辑视图中。
在我的模型中,我有:
class Person < ActiveRecord::Base
attr_accessible :first_name, :last_name
belongs_to :organization
validates_presence_of :first_name, :message => "First name can't be blank"
validates_presence_of :last_name, :message => "Last name can't be blank"
在我的控制器中,我有
def update
@person = Person.find(params[:id])
if @person.update_attributes(params[:person])
redirect_to(:action => 'list')
else
render('edit')
end
end
在我看来我有
<div>
<%= form_for(:person, :url => {:action => 'update', :id => @person.id}) do |f| %>
<%= f.errors %>
<table>
<tr>
<th>First Name:</th>
<td><%= f.text_field(:first_name) %></td>
</tr>
<tr>
<th>Last Name:</th>
<td><%= f.text_field(:last_name) %></td>
</tr>
</table>
<div>
<%= submit_tag("Update Person") %>
</div>
<% end %>
</div>
当我在浏览器中通过将名字字段留空来测试验证时,它不会保存记录并重定向到编辑,但不会显示任何验证错误。但是,当我在控制台中尝试使用时:
f = Person.find(1)
#returns record
f.first_name = “”
#returns “”
f.save
#returns false
f.errors
#returns @message = (:first_name => [“First name can't be blank”])
所以它在控制台中有效,但在浏览器中无效。我究竟做错了什么?