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语句中检查它时,它不工作