2013-04-14 2 views
0

Я пытаюсь проверить, существуют ли мои значения ... Не знаю, как это сделать, я только начинаю изучать Ruby on Rails. Надеюсь, кто-то может указать мне в правильном направлении?Ruby on Rails: тестирование, если значения существуют?

Допустим, у меня есть этот блок кодов:

@lv = {'apple' => ['red', 'round'], 'iPhone' => ['device', 'phone']} 

if params[:var] 
    @lv.each do |key, tags| 
     if params[:var] == key 
      lvtags = @lv[params[key]] 
      lvtags.each do |tag| 
       @tags = client.tag_recent_media(tag) 
      end 
     end 
    end 
end 

Я пытаюсь увидеть, если перебрать if params[:var] == key работ. Я хотел бы как-то вывести вроде типа alert(), чтобы проверить, имеет ли значение значение key? Есть что-то вроде alert(key)? где он будет показывать, есть ли у key? Или если я смогу проверить, имеет ли значение lvtags значение, которое оно должно выскочить?

Например, если ?var=0

Тогда я хотел бы проверить alert(lvtags), и, таким образом, это должно выскочить apple или что-то, какое-то значение, связанное с lvtags = @lv[params[key]]. Как мы обычно тестируем что-то подобное в рельсах?

Благодаря

ответ

1

Вы можете сделать puts key. Puts преобразует свой первый параметр в строку и выводит его в стандартный вывод (консоль).

Возможно, вам будет проще использовать отладчик. Вы можете открыть консоль отладчика (думаю GDB) с

require 'debugger'; debugger 

Обязательно установите the debugger gem первым. Поместите следующее в вашем Gemfile

gem 'debugger', group: [:development, :test] 

Edit: добавлена ​​ссылка на страницу GitHub отладчика драгоценного камня.

+0

Я пытаюсь выполнить 'puts' в своих взглядах, но его даже не распечатав тест я делаю: <% = ставит«тест»% >, Я даже попробовал <% = print "test"%>, не работал? – hellomello

+0

Я ожидал, что 'puts' будет находиться в вашем контроллере (в' '@ lv.each do'). Однако «puts» в целом должен работать и в вашем представлении. Но он * не * отображает любую информацию в вашем представлении. Он отображает его на консоли (где вы набрали «сервер рельсов»). – tessi

+1

Лучше использовать 'p', чем' puts' для отладки, так как он будет печатать более полезную информацию (например, 'nil' вместо ничего) –

0

Вы можете просто зарегистрировать его на своей консоли.

Rails.logger.info key.inspect # or whichever's value you want to check 

Это также полезно при проверке объектов

+0

Извините за этот вопрос новичков, но вы можете объяснить, где я бы это сказал? У меня есть петля в моем контроллере. Не знаете, где я должен применять предоставленный вами код? – hellomello

+0

, если вы хотите проверить ключ на каждой итерации цикла, вы можете поместить его внутри цикла '@lv.each do | key, tags | ' –

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