2013-10-01 32 views
0

我想通过使用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 

Github

感谢帮助!

回答

1

问题出在您的_question.html.erb部分。

当你在index.html.erb<%= render @questions %>,这使通话将照顾循环在@questions收集的,它会使每个question部分_question.html.erb。问题是,在你的部分中,你用<% @comment.questions.order("cached_votes_total desc").each do |question| %>再次重复所有问题。

为了解决这个问题,你只需要删除的_question.html.erb第一线的循环,因为<%= render @questions %>是一样的:

<% @questions.each do |question| %> 
    <%= render 'question', question: question %> 
<% end %> 

Rails的文档有关呈现类别:http://guides.rubyonrails.org/layouts_and_rendering.html#rendering-collections

+0

这工作,谢谢! – user2759575

0

我没听懂多少阅读你的问题,但是这将有助于

<% @comment.questions.select("DISTINCT(questions.id), *").order("cached_votes_up desc").each do |question| %> 
1

在你index.html.erb你正在做render @questions。这会呈现集合@questions,以便呈现该集合中的每个项目。

它正在渲染_question.html.erb中的视图。在那个文件中,你有你的<% @comment.questions.order("cached_votes_up desc").each do |question| %>。所以这就是为每个问题提供@comment

您确实想要在评论视图中呈现评论,并显示该评论的问题,或呈现独立于评论的问题集。一起做这两件事给你多重性。