2016-05-31 48 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_itemnil,因爲沒有賦值給它。看起來你試圖在ERB視圖中使用它,這可能意味着它打算來自數據庫。

你應該在你的控制器動作(一個用於視圖)的聲明,做這樣的事情:

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編輯 @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的模型以及編輯操作的日誌。您可以點擊您問題下方的「編輯」鏈接(在評論上方),將此信息添加到問題中。 –

+0

我不知道我做了什麼不同,但它的工作。謝謝您的幫助! –

相關問題