我有三种模式:帖子,问题和评论(评论属于问题和问题属于帖子),我试图在评论索引页面上显示最后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
答案 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
由于评论是一个集合,您可能希望从每个评论中获得最后两个问题