2016-05-31 14 views
1

幸せそれが0なら、私は「いいえ」を表示したいし、それが1だ場合、私は私が持っている私のコントローラでは、「はい」私のビューアにはメソッドの結果が表示されないのはなぜですか?

を表示したい、私は0または1のいずれかに設定されている整数の変数である:

helper_method :happy_to_text 
def happy_to_text(happy) 
    happy > 0 ? 'Yes' : 'No' 
end 

def edit 
    @todo_item = @todo_list.todo_items.find(params[:id]) 
end 

私がしようとした場合:

<td><%= happy_to_text(1) %></td> 

それは私がしようとした場合、 "はい"

を表示し、正常に動作します:

<td><%= todo_item.happy %></td> 

それは私がしようとした場合、 "1"

を表示し、正常に動作します:

<td><%= happy_to_text(@todo_item.happy) %></td> 

それはエラーで失敗します。

"undefined method `>' for nil:NilClass" 

私が欠けていると確信しています何か基本的なものだが、私は立ち往生している。どんな助けもありがとう。

+0

'todo_item.happy'は' nil'です。あなたのメソッドの期待通りの数値があることを確認できますか? –

答えて

1

オブジェクトtodo_itemは値が割り当てられていないためnilです。 ERBビューで使用しようとしているようですが、これはおそらくデータベースからのものであることを意味しています。

あなたはこのような何かをし、あなたのコントローラのアクション(ビューに1つ)内のステートメントが必要です:それはあなたのビューのコードで、あなただけのために@プレフィックスを逃している可能性があります

def show 
    @todo_item = TodoItem.find(params[:id]) 
end 

をあなたのビューでそれを使用するときの変数。

<td><%= happy_to_text(@todo_item.happy) %></td> 

そうでない場合、あなたはtodo_itemに値を代入するコードが欠落している、とあなたが使用することを試みることができます前に、あなたがそれを行う必要があります。その場合は、おそらくこのように見えるためのコードを意味し値。

+0

迅速な対応をありがとう。私は ​​<%= happy_to_text(@ todo_item.happy)%> にそれを更新すると、私はゼロのための「'幸せ未定義のメソッドを取得します:NilClass 私は私のコントローラで次の手順を持っています。 def edit @todo_item = @ todo_list.todo_items.find(params [:id]) end –

+0

@Chrisこれは良い情報ですが、この問題を解決するには十分ではありません。あなたは@todo_item変数の値を取得していないので、データベース値が見つからない、不適切なモデル定義などの理由のいずれかが原因である可能性があります。値を取得する方法( '@todo_item = @ todo_list.todo_items.find(params [:id]) ')は奇妙ですが、あなたのアプリに適しているかもしれません。 TodoListとTodoItemのモデルと編集アクションのログを投稿してください。あなたの質問の下にある(コメントの上にある) 'edit'リンクをクリックして、この情報を質問に追加することができます。 –

+0

私は何が違ったのか分かりませんが、うまくいきます。助けてくれてありがとう! –

関連する問題