未定义的方法'问题'

时间:2013-12-12 22:59:56

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

我有三种模式:帖子,问题和评论(评论属于问题和问题属于帖子),我试图在评论索引页面上显示最后2个问题。
这是我的comments_index函数:

def index

@question = Question.find params[:question_id]
@comments = @question.comments
@questions = @comment.questions.order(:created_at).limit(2).reverse_order

end

和我的comments_index:

<% @questions.each do |question| %>
<%= question.body %>
<% end %>

这是我得到的错误:

 undefined method `questions' for nil:NilClass

我的routes.rb文件如下所示:

 resources :posts do
  resources :questions do
  end
 end

 resources :questions do
  resources :comments do
  end
 end

2 个答案:

答案 0 :(得分:1)

问题有多少评论? 评论belongs_to question?

如果是这种情况,你只能得到评论的1个问题......但是当你去问题页面时你已经得到了...如果你只是想获得最后2个问题问题(期间),你可以这样做:

@post = @question.post
@questions = @post.questions.order(:created_at).last(2)

这将为您提供数据库中的最后两个问题。

和你的路线......不应该是:

resources :posts do
  resources :questions do
    resources :comments do
    end
  end
end

答案 1 :(得分:0)

有一个错字。您正在使用@comment

初始化@comment s
def index 
  @question = Question.find params[:question_id]
  @comments = @question.comments
  @questions = @comments.collect{|c|c.questions.order(:created_at).limit(2).reverse_order}
end

由于评论是一个集合,您可能希望从每个评论中获得最后两个问题