2016-02-26 69 views
2

在Rails我能做到這一點,以獲得完整的錯誤信息(包括屬性的名稱)Ruby on Rails的full_messages特定屬性

book.errors.full_messages.each do |err| 
    puts err 
end 

我的問題是,我該怎麼做同樣的事情,但對於一個特定的屬性?

我不能做到這一點:

book.errors[:title].full_messages 

至於現在這是我在做什麼

book.errors[:title].each do |err| 
    puts " Title #{err}" 
end 

我很期待,如果有一個更好的辦法

回答

2

要獲取特定屬性使用的完整錯誤消息full_messages_for

book.errors.full_messages_for(:title) 
+0

這!謝謝。沒有想到'full_messages_for'確實存在 –

1

我認爲這個策略是適當的。即使您指定了特定屬性,errors方法也會始終返回數組,因爲可能會有多個與單個屬性關聯的錯誤。如果book只有一個屬性包含一個錯誤(可以說的:title屬性),應該有這兩種方法的輸出之間沒有區別:

book.errors.full_messages.each do |err| 
    "#{err}" 
end 

book.errors[:title].each do |err| 
    "#{err}" 
end 
+0

@infused,顯然我沒有足夠的聲望來評論你的答案,所以我會這樣做:我沒有意識到'full_messages_for(:title)'方法,它的輸出和'errors [:title]'的輸出有區別嗎?快速測試它們,它們似乎輸出相同的東西。 – John

+0

你的第一塊會顯示所有的錯誤信息,包括其他屬性(例如:作者,描述等),我想要的只是標題。第二個塊只會顯示標題錯誤,但不會包含屬性名稱(「不能爲空」而不是「標題不能爲空」)。 @ infused的答案,'full_messages_for(:title)'與'errors [:title]'不同的是它是否添加屬性名稱(例如:「標題不能爲空」) –

+0

@AgungSetiawan謝謝! – John