2016-05-15 39 views
0

我试图在一个表的代码块中执行两条.each do语句。我从一个数据库表中提取问题,从另一个数据库中提取答案,最后,我现在试图从第三个表中提出问题的评论。这是我所拥有的一部分。它可以很好地与其中一个或另一个语句一起工作,但我需要能够拉出所有三个表格并且能够遍历每个数据库并使其填充表格中的信息量。在ruby中的一个块中执行两条each语句

<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> 

有的西纳特拉

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

如何有关问题/评论结果?什么是用于关联数据库的外键? –

+0

所以你想要一个循环并迭代两个数组? –

+0

@PetrGazarov是的, –

回答

1

如果我理解正确的 - 你datadataC阵列是嵌套的,所以它们必须是相同的长度,你可以试试这个:

<% 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

我能够使用我找到一个zip方法后,搜索一个循环,并迭代两个数组不知道为什么我没有这样措辞,但这非常谢谢你,生病尝试你的如果它工作不正常,至少应该给予满意的答复 –

0

我结束了上述:)所以使用的是.zip方法寻找一个更好的短语感谢评论后想出来的像一个魅力的工作马上

<% 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>