如何将这个PHP代码转换为ruby(RoR)代码?

时间:2016-02-13 15:39:14

标签: php ruby-on-rails ruby switch-statement

我是铁轨上的红宝石新手。我正在从php迁移到ruby。现在我有一些正在转换成ruby代码的php项目。但是如何在rails 4上将此切换代码转换为ruby? function ajax($ command){

    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 个答案:

答案 0 :(得分: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执行某些操作。

在ruby中,case将返回最后一个值,因此您可以将其保存为变量。

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的更多内容。