2011-07-11 7 views
1

私は適切なチェックボックスがクリックされたときに選択リストを有効または無効にするコードを持っていますが、ポストですべて無効にされていれば、それらをparamsリストに送信しません。したがって、コードが存在する場合にのみ実行する必要があります。Railsでオブジェクトがnilの場合、コードの一部をスキップするにはどうすればよいですか?

私が使用してきました:

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?をチェックします。

EDIT:あなたはnil?またはempty?のいずれかに対して評価することを求める場合blank?が優れていることを正しく状態以下コメント。

+0

はい、これが問題でした。ありがとう –

+0

.blank?また動作します。 –

+0

@ travis-pessetto '.blank?'は、 '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]] } 
関連する問題