以下是我的两个部分
中的两个循环循环1和部分1
<%@loop1.map do |p| %>
<li>
<%= image_tag p.product.image.url, :size=>"400x250"%>
<br \>
<p><%=p.product.text%></p>
<div class="pull-right">From: <u><%=p.product.user%></u></div>
<%end%>
</li>
<%end%>
循环2和部分2
<%@loop2.map do |p| %>
<li>
<%= image_tag p.product2.image.url, :size=>"400x250"%>
<br \>
<p><%=p.product2.text%></p>
<div class="pull-right">From: <u><%=p.product2.user%></u></div>
<%end%>
</li>
<%end%>
现在因为我在我的index.html.erb文件中使用了ajax,所以我用以上呈现的数据替换下面的两个div
<div class="loop1_results"></div>
<div class="loop2_results"></div>
所以现在发生的事情是先set of loop1 results
然后来set of loop2 results
。我想做的是交替显示的顺序。所以它会显示loop1块然后显示loop2块等等。
我该怎么做?
任何建议或帮助表示赞赏。如果可以通过将所有部分通过一个部分来完成,我该怎么办呢?
更新:Loop1和loop2是数组,大小不同。
答案 0 :(得分:1)
如果您使用的是Ajax,则可能有.js.erb(或者使用Coffee);在Javascript文件中,您可以选择加载数据的位置,例如,您可能有:
$(".loop1_results").html("<%= render :partial => @partial1 %>");
$(".loop2_results").html("<%= render :partial => @partial2 %>");
在操作中,您可以选择“随机”功能,该名称保存在@partial1
和@partial2
另外!我忘了你有不同的属性,你可以传递额外的变量来指定你需要的变量,或者,你可以在集合之间创建通用方法来获取数据
<强>更新强>
psharma你有以下代码:
$("div. loop1_results").append("<%= escape_javascript (render :partial => 'loop1') %>");
$("div. loop1_results").append("<%= escape_javascript (render :partial => 'loop2') %>");
现在,代替或渲染'loop1'和'loop2',你将使用我之前显示的变量,@ partial1和@ partial2;这个变量将包含'loop1'和'loop2',但是你在这些变量中保存的值将由“随机”函数选择,例如(这是一个虚拟的例子,请更好地嘿嘿):
if (rand()*10).to_i%2 == 0
@partial1 = 'loop1'
@partial2 = 'loop2'
else
@partial1 = 'loop2'
@partial2 = 'loop1'
end
更新#2
psharma我想我理解你,我认为最好的方法是将两个集合统一到一个集合中,并且只有一个集合。你说两个集合都来自不同的表(模型),所以你只能在1 get_product
的模型中创建一个名为p
的方法,这样你可以做的就是选择如果你得到product1
或product2
。
现在,您可以统一两个集合,但不能简单地执行@loop1 + @loop2
;你可以做的就是这样的事情(我没有测试过,请更好地嘿嘿):
@data = []
total = @loop1.count + @loop2.count - 1
for i in 0..total
if (i%2 == 0 || @loop2.empty?) && !@loop1.empty?
@data << @loop1.pop
elsif !@loop2.empty?
@data << @loop2.pop
end
end
答案 1 :(得分:1)
假设@loop1
和@loop2
大小相同,您可以使用以下代码解决给定问题:
<% (0..@loop1.size - 1).each do |i| %>
<% p = @loop1[i] %>
<li>
<%= image_tag p.product.image.url, :size=>"400x250"%>
<br \>
<p><%=p.product.text%></p>
<div class="pull-right">From: <u><%=p.product.user%></u></div>
<%end%>
</li>
<% p = @loop2[i] %>
<li>
<%= image_tag p.product2.image.url, :size=>"400x250"%>
<br \>
<p><%=p.product2.text%></p>
<div class="pull-right">From: <u><%=p.product2.user%></u></div>
<%end%>
</li>
<%end%>
在不了解您的数据结构的情况下,我无法为您提供更清晰的解决方案。