访问对象中的第一行

时间:2014-05-03 21:32:39

标签: ruby-on-rails ruby

<% question = @questions.try(:first) %>
<h1><%= question.title %></h1>

我正在尝试使用上面的代码从问题模型中获取第一个问题,然后在HTML中显示它的标题。但是,我正在抛出错误undefined method 'title' for nil:NilClass

自动生成的RoR文件使用question.title行...为什么不在这里工作?

2 个答案:

答案 0 :(得分:1)

question.title将错误提升为undefined method 'title' for nil:NilClass,表示question设置为nil。您使用

设置question
<% question = @questions.try(:first) %>

这意味着@questions为零或@questions.first返回nil

确保在Controller的操作中设置@questions实例变量,该操作会呈现此特定视图。

 def action_name
   @questions = Question.all
 end

此外,如果您只是想在视图中显示 第一条question条记录,并且您不打算在任何地方使用@questions,那么只需设置

 def action_name
   @question = Question.first
 end 

并直接在视图中使用它:

<h1><%= @question.try(:title) %></h1>

答案 1 :(得分:0)

看起来@question是零。您是否已在控制器操作中指定了@question。你能在控制器动作中显示你的代码吗?