2016-02-13 4 views
-5

Я новичок в рубине на рельсах. Я перехожу с php на ruby. Теперь у меня есть некоторые проекты php, которые преобразуются в ruby-код. Но как я могу преобразовать этот код коммутатора в ruby ​​on rails 4? функция Аякса ($ команда) {Как преобразовать этот код 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

Возможный дубликат [Как написать инструкцию switch в Ruby?] (Http://stackoverflow.com/questions/948135/how-can-i-write-a-switch-statement-in-ruby) – jmargolisvt

+0

лучший способ - закрепить рубин, прежде чем пытаться перенести что-то в рубин. самый простой способ - заплатить кому-то, кто знает рубин. худший способ спрашивать о SO, очевидно, прежде чем положить «случай рубинового переключателя» в поисковик по вашему выбору. –

ответ

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.com и tutorialspoint.com.

+0

. Я попытался бы избежать использования 'then' в максимально возможной степени, это увеличило бы удобочитаемость с помощью« действия »части 'when' разбивается на отдельную строку, особенно когда предложение довольно длинное. Хорошие примеры здесь, хотя! – tadman

Смежные вопросы