Ruby on rails 为什么赢了';我的查看器是否显示该方法的结果?

Ruby on rails 为什么赢了';我的查看器是否显示该方法的结果?,ruby-on-rails,ruby,ruby-on-rails-4,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_t

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>
<td><%= happy_to_text(@todo_item.happy) %></td>

我肯定我错过了一些基本的东西,但我被卡住了。任何帮助都将不胜感激。

对象
待办事项
nil
,因为没有为其赋值。看起来您正试图在ERB视图中使用它,这可能意味着它将来自数据库

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

def show
  @todo_item = TodoItem.find(params[:id])
end
<td><%= happy_to_text(@todo_item.happy) %></td>
在视图代码中,当您在视图中使用变量时,可能只是缺少变量的
@
前缀。在这种情况下,您的意思可能是代码如下所示:

def show
  @todo_item = TodoItem.find(params[:id])
end
<td><%= happy_to_text(@todo_item.happy) %></td>


否则,您将丢失将值分配给
todo\u项的代码,您需要这样做才能尝试使用该值。

todo\u项。happy
nil
。你能确保它的数值符合你的方法要求吗?谢谢你的快速回复。当我将其更新为nil:NilClass时,我得到了未定义的方法'happy',我的控制器中有以下内容。def edit@todo_item=@todo_list.todo_items.find(参数[:id])end@Chris这是很好的信息,但不足以继续解决这个问题。您没有在@todo_项变量中获取值,这可能是由于以下原因之一:缺少数据库值、模型定义不正确等。您检索值的方式(
@todo_项=@todo_列表.todo_项.find(params[:id])
)很奇怪,但可能适合您的应用程序。请发布TodoList和TodoItem的模型,以及编辑操作的日志。您可以单击问题下方(评论上方)的
edit
链接,将此信息添加到问题中。我不确定我做了哪些不同的操作,但它起到了作用。谢谢你的帮助!