2016-05-15 1 views
0

Ich versuche, zwei .each do Anweisungen in einem Codeblock für eine Tabelle auszuführen. Ich ziehe die Fragen von einer Datenbanktabelle heran, ziehe die Antworten von einer anderen heran und schließlich versuche ich nun, Kommentare zu den Fragen aus einer dritten Tabelle zu ziehen. Das ist ein Teil von dem, was ich habe. Es wird gut mit dem einen oder dem anderen jeder Anweisungen, aber ich muss in der Lage sein, alle drei Tabellen zu ziehen und in der Lage sein, durch jede Datenbank zu gehen und es meine Tabelle ausfüllen mit wie viel Informationen darin istAusführen von jeweils zwei Do-Anweisungen in einem Block in Ruby

<table id="table1" cellspacing="0" class="mytable" > 

<% dataQ.each do |dataQ| %> 
    <th><strong> <%=dataQ[1]%> </strong></th>  
<%end%> 

<% data.each do |data|%> 
    <% dataC.each do |dataC| %> 

    <tr> 
     <td><%=data[0]%></td> <td><%=data[1]%></td><td><%=data[2]%></td><td><%=data[3]%></td><td><%=data[4]%></td> 
     <td><%=data[5]%><div class="accordion">Comment</div><div class="panel"><%=dataC[0]%></div></td> 
     <td><%=data[6]%><div class="accordion">Comment</div><div class="panel"><%=dataC[1]%></div></td> 
     <td><%=data[7]%><div class="accordion">Comment</div><div class="panel"><%=dataC[2]%></div></td> 
     <td><%=data[8]%><div class="accordion">Comment</div><div class="panel"><%=dataC[3]%></div></td> 
    </tr> 

    <% end %> 
<% end %> 
</table> 

und einige sinatra

get '/display' do 

    dataQ = database.execute("select * from Questions"); 
    data = database.execute("select * from results"); 
    dataC = database.execute("select * from Comments")   

    erb :display, :locals => {:data => data, :dataQ => dataQ, :dataC => dataC} 

end 
+0

Wie Ergebnisse bezieht sich auf die Fragen/Kommentare ? Mit welchen Fremdschlüsseln werden die Datenbanken verknüpft? –

+0

Sie wollen also eine Schleife und beide Arrays iterieren? –

+0

@PetrGazarov ja, –

Antwort

1

Wenn ich das richtig verstanden - Ihr data und dataC Arrays verschachtelt sind, so dass sie gleich lang sind bereitstellen, können Sie dies versuchen:

<% 0.upto(data.length - 1) do |index| %> 
    <tr> 
    <td><%=data[index][0]%></td> 
    <td><%=data[index][1]%></td> 
    <td><%=data[index][2]%></td> 
    <td><%=data[index][3]%></td> 
    <td><%=data[index][4]%></td> 
    <td><%=data[index][5]%><div class="accordion">Comment</div><div class="panel"><%=dataC[index][0]%></div></td> 
    <td><%=data[index][6]%><div class="accordion">Comment</div><div class="panel"><%=dataC[index][1]%></div></td> 
    <td><%=data[index][7]%><div class="accordion">Comment</div><div class="panel"><%=dataC[index][2]%></div></td> 
    <td><%=data[index][8]%><div class="accordion">Comment</div><div class="panel"><%=dataC[index][3]%></div></td> 
    </tr> 
<% end %> 
+0

Ich war in der Lage, eine Zip-Methode zu verwenden, die ich nach der Suche nach einer Schleife gefunden und wiederhole beide Arrays nicht wissen, warum ich es nicht so formuliert hatte, aber das half vielen Dank, krank versuchen Sie out und wenn es klappt, gib wenigstens einen upvote –

0

landete ich es herauszufinden, nach oben aus nach einem besseren Ausdruck dank einem Kommentar über :) Suche So die ZIP-Methode gearbeitet wie ein Zauber sofort

<% dataQ.each do |dataQ| %> 
    <th><strong> <%=dataQ[1]%> </strong></th> 


<%end%> 

<% data.zip(dataC).each do |data,dataC|%> 

<tr> 
    <td><%=data[0]%></td> <td><%=data[1]%></td><td><%=data[2]%></td><td><%=data[3]%></td><td><%=data[4]%></td> 
    <td><%=data[5]%><div class="accordion">Comment</div><div class="panel"><%=dataC[0]%></div></td> 
    <td><%=data[6]%><div class="accordion">Comment</div><div class="panel"><%=dataC[1]%></div></td> 
    <td><%=data[7]%><div class="accordion">Comment</div><div class="panel"><%=dataC[2]%></div></td> 
    <td><%=data[8]%><div class="accordion">Comment</div><div class="panel"><%=dataC[3]%></div></td> 
</tr> 

<%end%> 
</table> 
Verwandte Themen