我有两个模型:评论和问题。我想在问题页面上显示最后两条评论。
继承人:
<% @comment.select(:body).order('created_at desc').limit(2).each do |comment| %>
<%= @comment.body %>
<% end %>
我收到此错误:
private method `select' called for #<Comment:0x0000010465ac70>
答案 0 :(得分:0)
使用send
:@comment.send( :select, :body ) # etc.
答案 1 :(得分:0)
您正在显示问题的最后2条评论。
协会: 问题has_many评论
@question.comments.select("body").order("created_at desc").limit(2).each do |comment|
comment.body
end
答案 2 :(得分:0)
我不知道这是否正确,但我认为你最好在我们的控制器上做好准备,所以视图只是为了显示它。它会使您的视图渲染速度更快。但如果我错了,请纠正我。我认为@joreal的答案是对的。你试过这个吗?
型号:question.rb
class Question < ActiveRecord::Base
has_many :comments
# some more code
end
控制器:questions_controller.rb
def show
@question = Question.find(params[:id])
@comments = @question.comments.order(:created_at).limit(2).reverse_order
# some more code
end
查看:views / questions / show.html.erb
<% @comments.each do |comment| %>
<%= comment.body %>
<% end %>
这种方式更干,更快,请有任何错误,我会更新答案。而且我认为您的代码存在拼写错误。
<%= @comment.body %>
应该是
<%= comment.body %>
因为它将您的别名|comment|
称为不再是您的变量@comment
。另外,因为您完成了comment.body
,我认为您不再需要查询.select(:body)
。