为什么观察者不会显示方法的结果?

时间:2016-05-31 14:40:57

标签: ruby-on-rails ruby ruby-on-rails-4

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"

我确定我遗漏了一些基本的东西,但我被困住了。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

对象todo_itemnil,因为没有为其分配任何值。您似乎正在尝试在ERB视图中使用它,这可能意味着它意图来自数据库。

您的控制器操作(视图中的操作)应该有一个语句,它可以执行以下操作:

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

在您的视图代码中,当您在视图中使用该变量时,您可能只缺少变量的@前缀。在这种情况下,您可能意味着代码如下所示:

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

否则,您错过了为todo_item分配值的代码,并且在尝试使用该值之前,您需要这样做。