happy是一个整数变量,我设置为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 :(得分:1)
对象todo_item
为nil
,因为没有为其分配任何值。您似乎正在尝试在ERB视图中使用它,这可能意味着它意图来自数据库。
您的控制器操作(视图中的操作)应该有一个语句,它可以执行以下操作:
def show
@todo_item = TodoItem.find(params[:id])
end
在您的视图代码中,当您在视图中使用该变量时,您可能只缺少变量的@
前缀。在这种情况下,您可能意味着代码如下所示:
<td><%= happy_to_text(@todo_item.happy) %></td>
否则,您错过了为todo_item
分配值的代码,并且在尝试使用该值之前,您需要这样做。