在ruby中运行.each循环时出错

时间:2011-11-01 05:53:52

标签: ruby if-statement each

我正在尝试实现服务器端验证,为此我收到变量@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 '('

请有人帮忙解决这个问题。

干杯! :)

2 个答案:

答案 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不知道您的意思是在ifkey之间结束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中,您在两个最终]之间错过了}