私有方法`select'错误

时间:2013-10-26 04:07:45

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

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

继承人:

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

我收到此错误:

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

3 个答案:

答案 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)

希望可以提供帮助。