2011-11-01 133 views
0

我想實現服務器端驗證,這樣做,我收到了可變@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

你想要的其中之一:

@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並不知道你的意思是結束keyputsif之間所以它試圖將key puts v解釋爲==的一個參數,但會讓人感到困惑。

+0

非常感謝,這是對的!那些絞盡腦汁的時間太長了! – verdure

1

而你必須在Ruby 1.9中定義散列或者使用低谷{「key」=>「value」}語法或{key:value}。所以,你變量應該是這樣的:

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

在@Validate你錯過}兩個最終]之間。