Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 验证表单中的虚拟属性:未定义的“有效”方法&x27;收件人:姓名:Symbol_Ruby On Rails - Fatal编程技术网

Ruby on rails 验证表单中的虚拟属性:未定义的“有效”方法&x27;收件人:姓名:Symbol

Ruby on rails 验证表单中的虚拟属性:未定义的“有效”方法&x27;收件人:姓名:Symbol,ruby-on-rails,Ruby On Rails,我有两个字段,我想在发送前验证其存在。但问题是控制器的模型在数据库中没有这些字段,所以我尝试创建虚拟属性。不过,我不太确定如何让它发挥作用 我试着在模型中这样做,叫做“查找号码” 当我输入信息时,我得到了错误 undefined method `valid?' for :name:Symbol 我可能错误地调用了:name和:original_number属性,而double if-then语句看起来非常新潮:p 如果:name.valid?&&,我需要替换什么原始编号。错误。有吗,以确保其有

我有两个字段,我想在发送前验证其存在。但问题是控制器的模型在数据库中没有这些字段,所以我尝试创建虚拟属性。不过,我不太确定如何让它发挥作用

我试着在模型中这样做,叫做“查找号码”

当我输入信息时,我得到了错误

undefined method `valid?' for :name:Symbol
我可能错误地调用了:name和:original_number属性,而double if-then语句看起来非常新潮:p


如果:name.valid?&&,我需要替换什么原始编号。错误。有吗,以确保其有效性?还是我还遗漏了很多?

我认为你混淆了“控制器”和“模型”之间的界限。控制器对您编写的模型内部的验证一无所知。控制器名为
findnumberscocontroller
,模型名为
FindNumber
,这一事实在共享功能方面并不意味着什么

您需要使用传入的参数显式创建模型的实例,并让模型对该实例执行验证

find_number = FindNumber.new(params.slice(:name, :original_number))
然后您可以询问实例作为一个整体是否有效

find_number.valid?
或者特定字段是否有任何错误消息

find_number.errors[:field].any?
因此,
:name.valid?
变成
查找编号。errors[:name]。empty?
:original\u number.errors。any?
变成
查找编号。errors[:original\u number]。any?

find_number.valid?
find_number.errors[:field].any?