0

我有 2 个模型:评论和问题。我试图在问题页面上显示最后 2 条评论。

继承人这一行:

<% @comment.select(:body).order('created_at desc').limit(2).each do |comment| %>
<%= @comment.body %>
<% end %>

我收到此错误:

private method `select' called for #<Comment:0x0000010465ac70>
4

3 回答 3

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。也因为您完成了 call comment.body,我认为您.select(:body)不再需要查询。

希望能有所帮助。

于 2013-10-26T06:06:19.927 回答
0

使用send@comment.send( :select, :body ) # etc.

于 2013-10-26T04:36:32.043 回答
0

您正在显示问题的最后 2 条评论。

关联:问题 has_many comments

@question.comments.select("body").order("created_at desc").limit(2).each do |comment|
  comment.body
end
于 2013-10-26T05:11:12.027 回答