我试图通过使用acts_as_votable gem的upvotes数来对我的问题进行排序。一切都很好,除了它显示整套问题n次,其中n是问题的#。例如。我发布了3个问题A,B和C,它将显示ABC ABC ABC。
这是我的观看代码:
<% @comment.questions.order("cached_votes_up desc").each do |question| %>
这是我的控制器代码:
def upvote
@question = Question.find params[:id]
@question.liked_by current_user
redirect_to comment_questions_path
end
def index
@comment = Comment.find params[:comment_id]
@questions = @comment.questions
end
感谢帮助!
答案 0 :(得分:1)
在index.html.erb
你正在做render @questions
。这将呈现集合@questions
,以便为该集合中的每个项目呈现。
它正在_question.html.erb
中呈现视图。在该文件中,您有<% @comment.questions.order("cached_votes_up desc").each do |question| %>
。这就是为@comment
呈现每个问题。
您真的想要在评论视图中呈现评论,并显示该评论的问题,或者呈现与评论无关的问题集。两者兼而有之,可以提供多重性。
答案 1 :(得分:1)
问题出在_question.html.erb
部分。
当您在<%= render @questions %>
中执行index.html.erb
时,该呈现调用将负责循环@questions
集合,并为每个{{1}呈现部分_question.html.erb
}}。问题是,在您的部分内容中,您使用question
再次迭代所有问题。
要解决此问题,您只需删除<% @comment.questions.order("cached_votes_total desc").each do |question| %>
第一行中的循环,因为_question.html.erb
与以下内容相同:
<%= render @questions %>
关于渲染集合的Rails文档:http://guides.rubyonrails.org/layouts_and_rendering.html#rendering-collections
答案 2 :(得分:0)
通过阅读你的问题,我不太了解,但这可能会有所帮助
<% @comment.questions.select("DISTINCT(questions.id), *").order("cached_votes_up desc").each do |question| %>