ビューの作成または編集に検証エラーを表示する方法がわかりません。
私のモデルには次のものがあります。
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”])
そのため、コンソールでは機能しますが、ブラウザーでは機能しません。私は何を間違っていますか?