2011-07-11 45 views
1

我有一段代碼可以啓用或禁用選擇列表,當單擊適當的複選框時,但是如果它們都在發佈時被禁用,它將不會在params列表中發送這些代碼。所以我只需要在代碼存在時執行代碼。如果對象在Rails中爲零,我該如何跳過一段代碼?

我用:

if params[:id][:id2].nil? 

if params[:id][:id2].blank? 

if params[:id][:id2].empty? 

不是簡單地提及:

if params[:id][:id2] 

而且所有的錯誤都是一樣的......「你有一個沒有預料到它的零對象。」我該如何解決這個錯誤?

回答

7

可能params[:id]爲零,檢查params[:id].nil?

編輯:以下狀態正確意見,即blank?是更好,如果你設法評估對任何nil?empty?

+0

是的,這是問題。謝謝 –

+0

.blank?也適用。 –

+0

@ travis-pessetto'.blank?'是一個在rails中定義的幫助器方法,可以將'nil?或空?'。你正在尋找的可能是'if params [:id] && params [:id] [:id2]' – Jakobinsky

0

同時

class Object 
    def unless_nil(default = nil, &block) 
    if nil? 
     default 
    else 
     block[self] 
    end 
    end 
end 

允許之類的東西:

id2 = params[:id].unless_nil { |p_id| p_id[:id2] } 
id2, id3 = params[:id].unless_nil([0, 0]) { |p_id| [p_id[:id2], p_id[:id3]] } 
相關問題