2012-03-19 14 views
0

ネストされたタスクを持つプロジェクトインスタンスがあります。 「ゼロのため、未定義のメソッド `名前」:NilClass」 ネストされたインスタンスの未定義メソッド

# debug result 
--- !ruby/object:Task 
attributes: 
    id: 1 
    name: XYZ 

私は、エラーメッセージが表示されましたproject.task.nameをデバッグしたい場合は

:私は project.taskをデバッグする場合、私は私が期待するものです。

project.task 

をし、プロジェクトがありますが、タスクがない、あなたはnilを取得する:あなたが実行している場合ので

# this works 
<% @projects.each do |project| %> 
    <%= project.name %><br/> 
    <%= debug project.task %> 
<% end %>   


# this does not work 
<% @projects.each do |project| %> 
    <%= project.name %><br/> 
    <%= debug project.task.name %> 
<% end %>   
+1

'@ projects'に少なくとも1つのプロジェクトがあり、タスクがないようです。 –

+0

ああ、確か。ご回答有難うございます。 – tonymarschall

答えて

1

最初のものは動作します。しかし

、あなたが実行します。

project.task.name 

タスクがnilであれば、それはname属性を見つけることができないので、あなたは、例外を取得。しかし、タスクが存在しない場合は、タスクがない場合は、それを強制的にnilにすることができます:

project.task.try(:name) 
関連する問題