Как найти элементы непосредственно до и после определенного элемента в упорядоченном массиве, используя Ruby on Rails? - PullRequest
0 голосов
/ 27 июля 2010

У меня есть массив «вопросов», упорядоченных в соответствии с их количеством голосов, и я хочу показать вопрос непосредственно перед и сразу после текущего выбранного вопроса.

Скажем, выбранный в данный момент вопросхранится в переменной @question, и я показываю список других вопросов, связанных с тем же пользователем.Этот код упорядочивает этот список в соответствии с количеством голосов:

questions = Question.find(:all, :conditions => {:user => @question.user}).sort { |q1,q2| q2.votes.length <=> q1.votes.length}

Теперь, как мне выбрать только вопрос до и вопрос после @question в этом списке?

Ответы [ 2 ]

1 голос
/ 27 июля 2010

Обновлено мой ответ.Я подумал, что вы, ребята, получите суть из первого поста, но вот более сложный пример.

Не можете ли вы сделать что-то простое, как:

@questions = user.questions.sort_by{ |q| -q.votes.length }
current_question_index = @questions.index(@question)
@prev_question = @questions[current_question_index-1]
@next_question = @questions[current_question_index+1]

Это больше строк, но просто используетпростое манипулирование массивом

0 голосов
/ 28 июля 2010

Я бы сослался на отметки времени.

prev = Question.first(:conditions => ["created_at < ?", @question.created_at], :order => "created_at DESC")
prev = Question.first(:conditions => ["created_at > ?", @question.created_at], :order => "created_at ASC")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...