2016-09-03 18 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) 

私は疑問が自分のIDの順に表示されていることを確認することができますので、ちょうどorder(:id)を使用します。私は答えを同じように注文する方法を理解できません。

@answers = @questions.answers.order(:id)ルビーが私がどの質問を使用しているのかわからないので、動作しません。 Quizモデルではhas_many :answers, through: :questionsを使用できません。すべての質問に対してすべての回答が表示されるからです。

question.answers.order(:id).eachのように私の視点で答えを並べ替えたいのですが、これを行うと何も起こりません(多分Arrayにはorderメソッドがないので)何をすればよいですか?

+0

答えが実際にどのようにソートされるべきか分かりません。より詳細な情報を提供できますか(おそらく潜在的な価値と期待される成果を共有することさえありますか?)。 –

+0

モデルにデフォルトスコープを追加してIDで注文することができ、レールはすべてのクエリにそれを追加する必要があります。 – 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 %> 
関連する問題