2016-09-03 4 views
0

Я использую heroku для запуска приложения для викторины.Как заказать модель по id в представлении?

class Question 
    belongs_to :quiz 
end 

class Answer 
    belongs_to :question 
end 

Так что я генерировать викторины, используя что-то вроде этого:

<% @questions.each do |question| %> 

// put questions here 

    <% question.answers.each do |answer| %> 

    // put answers here. 

    <% end #answer.each do %> 

<% end #questions.each do %> 

Это достаточно легко заказать @questions. В моем контроллере у меня есть:

@quiz = Quiz.find(params[:id]) 
@questions = @quiz.questions.order(:id) 

так просто с помощью order(:id) я могу гарантировать, что вопросы отображения в порядке их идентификатор. Я не могу найти способ заказать ответы таким же образом.

@answers = @questions.answers.order(:id) не работает, потому что я предполагаю, что рубин не знает, какой вопрос я использую. Я не могу просто использовать has_many :answers, through: :questions в моей модели Quiz, потому что тогда для каждого вопроса будут отображаться все ответы. Я хочу как-то отсортировать ответы на мой взгляд по id, что-то вроде

question.answers.order(:id).each но когда я это делаю, ничего не происходит (потому что, возможно, у Array нет метода заказа?) Что мне делать?

+0

Я не уверен, что понимаю, как ответы на самом деле должны быть отсортированы. Не могли бы вы дать более подробную информацию (возможно, даже поделиться некоторыми потенциальными значениями и ожидаемой продукцией?). –

+0

Вы можете добавить рамки по умолчанию к вашим моделям для заказа по идентификатору, а направляющие должны добавить его ко всем запросам. – Doon

ответ

0

Работает ли это за то, что вы хотите?

@questions.each do |question| 
     @answers = question.answers.order(:id) 
    end 

Дайте мне знать!

0

Итак, как вы настроили свои отношения, у каждого вопроса есть метод ответа, который возвращает список всех ответов, связанных с вопросом.

Итак, когда вы просматриваете каждый вопрос, вы можете получить этот список ответов, а затем отсортировать их.

<% @questions.each do |question| %> 

// put questions here 

    <% question.answers.order(:id).each do |answer| %> 

    // put answers here. 

    <% end #answer.each do %> 

<% end #questions.each do %> 
Смежные вопросы