2016-04-07 5 views
0

Ich mache eine Frage und antworte Anwendung auf Rails. Wie erstelle ich eine Seite, die alle Fragen auflistet und die letzte Antwort auf die Frage direkt darunter anzeigt?Iterieren durch die Tabelle und erhalten das letzte Element jedes Objekts in Rails

Dies ist meine Antworten Controller:

class AnswersController < ApplicationController 
    def index 
     @questions = Question.all 
    end 
end 

Frage und Antwort-Modelle:

class Answer < ActiveRecord::Base 
    belongs_to :question 
end 

class Question < ActiveRecord::Base 
    has_many :answers, dependent: :destroy 
end 

Index Ansicht:

<% if @questions.blank? %> 
    <p>No questions to display</p> 
<% else %> 
    <% @questions.each do |question| %> 
     <h2><%= question.title %></h2> 
     <!-- This is where the answer should appear. 
     It should be the last answer in the question. --> 
    <% end %> 
<% end %> 

ich den Titel bekam zu erscheinen, kann aber nicht bekommen der Körper zu arbeiten.

Es tut mir leid für den schlechten Titel, aber SO erlaubte mir nicht, "Frage" im Titel zu schreiben.

Vielen Dank!

Antwort

1

können Sie versuchen, this-

<% if @questions.blank? %> 
    <p>No questions to display</p> 
<% else %> 
    <% @questions.each do |question| %> 
    <h2><%= question.title %></h2> 
    <!-- This is where the answer should appear. 
    It should be the last answer in the question. --> 
    <%= question.answers.last %> 
    <% end %> 
<% end %> 
+0

Danke, aber es hat nicht funktioniert. Es gibt mir diesen Fehler: SQLite3 :: SQLException: keine solche Spalte: answers.question_id: SELECT "Antworten". * FROM "Antworten" WHERE "Antworten". "Question_id" =? ORDER BY "Antworten". "ID" DESC LIMIT 1 –

+0

Haben Sie den Fremdschlüssel "question_id" in der Tabelle "Antworten"? – dp7

+0

Ja! Das war das Problem. Ich hatte die Migration bereits ohne die Referenzen erstellt. Danke vielmals! Entschuldigung für die späte Antwort. –

Verwandte Themen