2016-02-13 165 views
-5

我是紅寶石軌道上的新手。我正在從PHP遷移到紅寶石。現在我有一些正在被轉換成ruby代碼的php項目。但是我怎樣才能將這個開關代碼轉換爲Ruby 4上的ruby? 功能AJAX($命令){如何將此php代碼轉換爲ruby(RoR)代碼?

switch ($command) { 
     case 'page_reload': 
      $this->ajax_delete_entries_of_current_uid(); 
      break; 

     case 'labchem_products': 
      $this->ajax_labchem_products(); 
      break; 

     case 'labchem_carts': 
      $this->ajax_labchem_carts(); 
      break; 

     case 'labchem_customers': 
      $this->ajax_labchem_customers(); 
      break; 

     case 'products_selected': 
      $this->ajax_products_selected(); 
      break; 

     case 'products_total': 
      $this->ajax_products_total(); 
      break; 

     case 'products_delivery_info': 
      $this->ajax_products_delivery_info(); 
      break; 

     case 'labchem_orders': 
      $this->ajax_labchem_orders(); 
      break; 

     default: break; 
    } 
} 
+1

[我如何在Ruby中編寫switch語句?](http://stackoverflow.com/questions/948135/how-can-i-write-a-switch-statement-in-ruby) – jmargolisvt

+0

最好的方法是在嘗試將某些東西移植到ruby之前先登錄ruby。最簡單的方法是支付一個知道紅寶石的人。最糟糕的方式是問這樣的問題,很明顯,在將「ruby switch case」放入您選擇的搜索引擎之前 –

回答

2
case command 
    when 'page_reload'  then ajax_delete_entries_of_current_uid() 
    when 'labchem_products' then ajax_labchem_products() 
    # or 
    when 'labchem_carts' 
    ajax_labchem_carts() 
    # and so on ... 
end 

你不需要break。只有一個或沒有when將被執行。如果沒有when匹配,則可以注意一個else執行某些操作。

在紅寶石的情況下將返回最後一個值,所以你可以將它保存到一個變量。

result = 
    case command 
    when 'a', 'b' then 1 
    when 'c' then 2 
    when 'd'..'z' then 3 
    else 
     0 
    end 

比較由對象類型和值(===)完成。

case 1 
    when '1' then 'a' 
    when 1 then 'b' 
end 
# => "b" 

更多的ruby-doc.comtutorialspoint.com

+0

我儘量避免使用'then',它增加了可讀性,其中有「動作」部分「什麼時候」分開,特別是當條款很長時。雖然這裏有很好的例子! – tadman