Ошибка при запуске цикла .each в ruby - PullRequest
0 голосов
/ 01 ноября 2011

Я пытаюсь реализовать проверки на стороне сервера, для этого я получаю значения формы в переменной @ 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 ]

2 голосов
/ 01 ноября 2011

Вы хотите один из них:

@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 голос
/ 01 ноября 2011

И вы должны определить хэш либо через {{key '=> "value"} синтаксис, либо с помощью {key: value} - в Ruby 1.9.Таким образом, ваши переменные должны выглядеть так:

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

В @validate вы пропускаете ] между двумя последними }.

...