我正在尝试实现服务器端验证,为此我收到变量@value中的表单值
@value = {"prev_school":{"name":"","class":"Nursery"},"sibling": {"name":""}}
@validate = {"prev_school":[{"name":["is_mandatory","is_alphabets"]}}
在@variable中,我定义了需要为每个字段调用的方法。我的问题是当我运行以下代码时
@value.each do |key,val|
@validate.each do |k,v|
if k == key puts v end
end
end
我收到指向if语句的错误
syntax error, unexpected tIDENTIFIER, expecting kDO or '{' or '('
请有人帮忙解决这个问题。
干杯! :)
答案 0 :(得分:2)
你想要其中一个:
@value.each do |key,val|
@validate.each do |k,v|
if k == key
puts v
end
end
end
或
@value.each do |key,val|
@validate.each do |k,v|
puts v if k == key
end
end
您的版本是语法错误,因为Ruby不知道您的意思是在if
和key
之间结束puts
所以它试图将key puts v
解释为==
的一个论点,但感到困惑。
答案 1 :(得分:1)
你必须通过{“key”=>来定义哈希值“值”}语法,或者使用{key:value} - 在Ruby 1.9中。所以你的变量应该是这样的:
@value =
{
"prev_school" => {"name" => "", "class" => "Nursery"},
"sibling" => {"name" => ""}
}
@validate = {"prev_school" => [{"name" => ["is_mandatory","is_alphabets"]}]}
在@validate中,您在两个最终]
之间错过了}
。