2016-02-13 185 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