0

我正在尝试使用acts_as_votable gem 按投票数对我的问题进行排序。一切都很好,除了它显示整个问题集 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

感谢帮助!

4

3 回答 3

1

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

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

您真的想在评论视图中呈现评论,并显示该评论的问题,或者独立于评论呈现一组问题。两者一起做会给你多样性。

于 2013-10-02T00:10:32.233 回答
1

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

当您执行<%= render @questions %>in 时index.html.erb,该渲染调用将负责循环遍历@questions集合,并_question.html.erb为每个渲染部分question。问题在于,在您的部分中,您再次使用<% @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

于 2013-10-02T00:10:51.187 回答
0

通过阅读您的问题,我不太了解,但这可能会有所帮助

<% @comment.questions.select("DISTINCT(questions.id), *").order("cached_votes_up desc").each do |question| %>
于 2013-10-02T00:05:28.737 回答