2013-04-14 172 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]]一定的價值。我們通常如何在rails中測試這樣的東西?

感謝

回答

1

你可以做一個puts keyPuts將其第一個參數轉換爲字符串並將其輸出到stdout(您的控制檯)中。

不過,使用調試器可能更容易。你可以打開一個控制檯調試器(GDB認爲)與

require 'debugger'; debugger 

請務必先安裝the debugger gem。將以下內容放入您的Gemfile中

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

編輯:添加了一個指向調試器gem的github頁面的鏈接。

+0

我想實現'在我的觀點puts',但它甚至沒有打印出測試我做對象時也是有幫助的:<%=把「測試」% >,我甚至試過<%= print「test」%>,沒有工作? – hellomello

+0

我期望'puts'在你的控制器內(在'@lv.each do'內)。不過,一般而言,「放置」也應該適用於您的觀點。但它*不顯示任何信息在你的看法。它顯示在您的控制檯(您鍵入'rails server'的地方)。 – 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 |'loop –