2011-08-05 7 views
1

私はここで何かダムをやっているような気がします。私は簡単なTODOリストアプリを作っています(私はすでに100万人もいることを認識しています)。私はプロジェクト定義と、そのプロジェクト内のタスクを割り当てることができるさまざまなステータスを持っています。 nilのためのRails 3 Render Partial nil object

未定義のメソッド `タイトルを」:NilClass

This question about nil objectsは、しかし、非常に似ている、どんなにページを打つとき、私は、次のエラーメッセージを受信して​​るものを、

提案されたソリューションは、私が直面している問題を解決していないようです。プロジェクトに関連付けられたステータスは1つのみで、それはゼロではありません。この問題は、ステータスが連想さとは何かを持っている場合、私は私のプロジェクトで

は私が持っている...思ったんだけど:

<% @project.statuses.each do |s| %> 
     <%= s.inspect %> 
     <%= render 'statuses/show', :status => s %> 
    <% end %> 

#if I take out the render line - the status shows up 

状況は今基本的には一般的な足場図です - コントローラから直接データを渡していた場合は、@statusというオブジェクトを受け取ることになります。 ... render :partial..., :locals => { :status = s}などでこれを試してみました。ご提案があれば幸いです。

アップデート - 一部_showを追加しました:

<p id="notice"><%= notice %></p> 

<p> 
    <b>Title:</b> 
    <%= @status.title %> 
</p> 

<p> 
    <b>Description:</b> 
    <%= @status.description %> 
</p> 

<p> 
    <b>Active:</b> 
    <%= @status.active %> 
</p> 

<%= link_to 'Edit', edit_status_path(@status) %> | 
<%= link_to 'Back', statuses_path %> 

アップデート -

NoMethodError in Projects#show 

Showing /home/.../app/views/statuses/_show.html.erb where line #5 raised: 

undefined method `title' for nil:NilClass 
+0

ステータス/ _show partialの内容を表示できますか? –

+0

おそらく、犯人行を指すスタックトレースの部分です。 – Thilo

答えて

2

エラーメッセージの追加さより私はこの問題は、あなたが@statusに言及していることであると信じてERB partial、statusを参照する必要があります。先頭は@です。

@statusは、定義されたインスタンス変数を検索することを意味します。 :status => sを渡している間は、ビューにというローカル変数status)を介してsにアクセスできることを意味します。

また、単純に:status => sが機能しない場合は、:locals => {:status => s}を試してください。いずれにしても、ではなく、ビューでstatusにアクセスしてください。

+0

ありがとうございました。 –

1

最大の問題は、:statusがレンダリングのオプションであることです。これは、HTTPコードを200や:okのようにレンダリングします。動作するはずです何

は次のとおりです。

<%= render :partial => 'statuses/show', :locals => { :status => s } %> 

と変数の@を使用しないでください。

<%= status.title %>