2013-10-01 2 views
0

Я пытаюсь сортировать свои вопросы по количеству upvotes с помощью act_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

Цените помощь!

ответ

1

Проблема в вашем _question.html.erb частичная.

Когда вы <%= render @questions %> в 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

+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.

Вы действительно хотите либо сделать комментарий в представлении комментариев, и показать вопросы для этого комментария, либо отобразить множество вопросов независимо от комментария. Выполнение обоих вместе дает вам множественность.

Смежные вопросы