【问题标题】:Error while running .each loop in ruby在ruby中运行.each循环时出错
【发布时间】:2011-12-19 06:17:43
【问题描述】:

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

有人可以帮忙吗?

干杯! :)

【问题讨论】:

    标签: ruby if-statement each


    【解决方案1】:

    你想要其中之一:

    @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 不知道您的意思是在 keyputs 之间结束 if,因此它试图将 key puts v 解释为 == 的参数但得到困惑。

    【讨论】:

    • 非常感谢,没错!绞尽脑汁这么久!
    【解决方案2】:

    您必须通过 { "key" => "value" } 语法或 { key: value } 定义哈希 - 在 Ruby 1.9 中。所以你的变量应该是这样的:

    @value =
    {
      "prev_school" => {"name" => "", "class" => "Nursery"},
      "sibling" => {"name" => ""}
    }
    @validate = {"prev_school" => [{"name" => ["is_mandatory","is_alphabets"]}]}
    

    在@validate 中,你在两个最后的} 之间错过了]

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-01-19
      • 1970-01-01
      • 2016-02-14
      • 2015-05-30
      • 2013-07-21
      • 1970-01-01
      • 2019-04-03
      相关资源
      最近更新 更多