無法弄清楚如何獲取驗證錯誤以在創建或編輯視圖中顯示。rails 3.2.8驗證錯誤未顯示在視圖中
在我的模型,我有:
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」])
所以它在控制檯中工作,但不是瀏覽器。我究竟做錯了什麼?
我認爲顯示錯誤的方法是'<%= f.error_messages%>'或'<%@ post.errors.full_messages.each do | msg | %>
感謝您的回覆,但當我使用f.error_messages和「未定義方法錯誤」爲零時,我得到了「」 :NilClass「當我使用第二種方式。 –
Ria
如果你交易'@ person'而不是':person' –