2013-05-14 118 views
0

rails guide中讀取它說要更改基本錯誤消息,您可以將新基準添加到errors數組中。出於某種原因,這樣做會導致兩個錯誤信息,而一個甚至不去做我所期待的,這是我在我的代碼rails形式的基本錯誤消息

validates :tawme, :start_date, presence: true 
def tawme 
    errors[:base] << "Buyaka!" 
end 

然而,當有窗體上的錯誤消息我得到

The form contains 2 errors 
Buyaka! 
Start date can't be blank 

我期待"Start date"將被替換爲"Buyaka!"因爲這是新的基礎。

回答

2

您應該刪除:從方法的參數起始日期和呼叫在這樣的方法tawme添加到if start_date.blank? ...

validate :tawme 
def tawme 
    errors[:base] << "Buyaka!" if start_date.blank? 
end 

注意去掉「s」,因爲每Rails的驗證方法。 validates變成validate

在您的代碼中,您仍然包含validates_presence_of(start_date)。另外,errors [:base]是一個你不替換的數組。

<<方法將字符串推到errors散列中的數組末尾。

有用... http://guides.rubyonrails.org/active_record_validations_callbacks.html#custom-methods

+0

權,您正在使用新的自定義消息替換數組的開始:-) – tawheed 2013-05-14 03:15:26

+2

沒有要附加到它。如果你有pry,你應該這樣做,並且在調用binding.pry之前插入一個validate塊,你可以在命令行中輸入錯誤,找回包含[:base]和[:start_date]數組的哈希。你可以添加東西。嘗試輸入錯誤[:base] <<「你好。」然後再次顯示。然後你會有「布加卡」和「你好」在一起。 – ovatsug25 2013-05-14 03:18:12

+0

關於'<<'方法的Ruby doc。 http://ruby-doc.org/core-2.0/Array.html#method-i-3C-3C – ovatsug25 2013-05-14 03:19:12