Ruby on rails 使用if语句不';测试错误验证文本是否与字符串匹配;t工作
我的用户模型中有一个验证,用于检查输入文本是否有值:Ruby on rails 使用if语句不';测试错误验证文本是否与字符串匹配;t工作,ruby-on-rails,Ruby On Rails,我的用户模型中有一个验证,用于检查输入文本是否有值: validate :picture_name ... ... ... def picture_name errors[:picture].push "no_name" if namePicture.blank? end html文本字段: <input type="text" name="namePicture" /> 在我看来,我想检查@user.errors[:picture]是否只包含1个错误,并且错误文本
validate :picture_name
...
...
...
def picture_name
errors[:picture].push "no_name" if namePicture.blank?
end
html文本字段:
<input type="text" name="namePicture" />
在我看来,我想检查@user.errors[:picture]是否只包含1个错误,并且错误文本是“no\u name”(no\u name是通过picture\u name验证添加的错误):
测试工作
测试不起作用
但我不知道为什么它总是告诉我“测试不起作用”,即使错误['picture']只包含一个“no_name”作为错误
我的if语句中有一些错误?还是什么
谢谢你我想这与用符号(:picture)设置错误有关,但测试字符串('picture')+错误[:picture]包含数组,而不是字符串我想这与用符号(:picture)设置错误有关,但测试字符串('picture')+错误[:picture]包含数组,不是字符串我在上面的陈述中找到了解决方案,如果有人感兴趣:
if @user.errors.count.eql? 1 && @user.errors['picture'] == "no_name"
我使用高优先级的&&运算符,这意味着我的语句如下所示:
if @user.errors.count.eql? ( 1 && @user.errors['picture'] == "no_name" )
或者更明确地说
if @user.errors.count.eql? true
哪个是错误的
因此,解决方案是:
使用括号:
if (@user.errors.count.eql? 1) && (@user.errors['picture'] == "no_name")
或使用优先级较低的“AND”运算符:
if @user.errors.count.eql? 1 and @user.errors['picture'] == "no_name"
如果有人感兴趣,我在上面的陈述中找到了解决方案:
if @user.errors.count.eql? 1 && @user.errors['picture'] == "no_name"
我使用高优先级的&&运算符,这意味着我的语句如下所示:
if @user.errors.count.eql? ( 1 && @user.errors['picture'] == "no_name" )
或者更明确地说
if @user.errors.count.eql? true
哪个是错误的
因此,解决方案是:
使用括号:
if (@user.errors.count.eql? 1) && (@user.errors['picture'] == "no_name")
或使用优先级较低的“AND”运算符:
if @user.errors.count.eql? 1 and @user.errors['picture'] == "no_name"
即使使用symbol:picture也不工作,当我使用:error['picture']显示错误时,它工作,但当我在if语句中检查它时,它不工作即使使用symbol:picture也不工作,当我使用:error['picture']显示错误时,它工作,但当我在if语句中检查它时,它不工作