2013-05-14 119 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