Ruby on rails 带有索引的每个_工作不正常
我正在使用旋转木马来显示图像。我已将图像上传到云中。但不知何故,它是在自我重复。 这是我的密码Ruby on rails 带有索引的每个_工作不正常,ruby-on-rails,iterator,ruby-on-rails-3.2,each,carousel,Ruby On Rails,Iterator,Ruby On Rails 3.2,Each,Carousel,我正在使用旋转木马来显示图像。我已将图像上传到云中。但不知何故,它是在自我重复。 这是我的密码 div id="myCarousel" class="carousel slide"> <div class="carousell-inner"> <% @img.each_with_index do |i|%> <% if i.gallery == "Art"%> <div class="active item">
div id="myCarousel" class="carousel slide">
<div class="carousell-inner">
<% @img.each_with_index do |i|%>
<% if i.gallery == "Art"%>
<div class="active item">
<%= image_tag (i.image.url) %>
</div>
<% i.next%> <!-- For incrementing the i value but it is not working-->
<div class="item">
<%= image_tag (i.image.url)%>
</div>
<%end%>
<%end%>
</div>
</div>
div id=“myCarousel”class=“carousel slide”>
我想要的是在
活动项中
它应该显示图像数组的第一个url,并且在非活动项(之后将处于活动状态)中应该有其他图像。它不应该重复图像。在这里,由于i
的值没有改变,因此它正在重复图像 我开始明白你想要什么:)
如果要分离数据,可以使逻辑非常简单
<div id="myCarousel" class="carousel slide">
<div class="carousell-inner">
<% @img.keep_if{|i| i.gallery == "Art"}.each do |i|%>
<div class="active item">
<%= image_tag (i.image.url) %>
</div>
<%end%>
<% @img.keep_if{|i| i.gallery != "Art"}.each do |i|%>
<div class="item">
<%= image_tag (i.image.url)%>
</div>
<%end%>
</div>
</div>
最好是在控制器中准备数据,而不是在视图中。我通过手动操作找到了答案。首先,在控制器中,我通过此代码找到了属于
美术馆的所有图像
@image = Image.find_all_by_gallery("Art")
现在要显示数组的第一个元素@image
,我们可以简单地使用@image.first
,然后我们可以在carousel的活动项中调用数组的第一个元素。然后对于项
部分,需要了解的基本情况是,如果我们直接调用并显示数组的所有元素,那么数组的第一个元素也将显示在该部分中。因此,重复可能发生。为了避免这种情况,我们可以这样做:
i = @image.count
@image[1..i]
这样第一个元素就不会在旋转木马的“项目”部分重复。
希望它能帮助别人。谢谢你给我时间 我最初认为您需要每个带有索引的图像,但实际上,您只对艺术
图库中的图像感兴趣,不知道第一个图像是否真的是艺术
图像,因此我尝试如下:
<div id="myCarousel" class="carousel slide">
<div class="carousell-inner">
<% art_images_counter = 0 %>
<% @img.each do |image|%>
<% if image.gallery == "Art" %>
<% if art_images_counter == 0 %>
<div class="active item">
<%= image_tag (image.image.url) %>
</div>
<% else %>
<div class="item">
<%= image_tag (image.image.url)%>
</div>
<% end %>
<% art_images_counter += 1 %>
<%end%>
<%end%>
</div>
</div>
希望这能有所帮助。尽量精简代码<代码>每个带有索引的\u
肯定工作正常。该错误一定是在您使用它时出现的。但是,由于所有这些无关的噪音,很难看到。您的零件
完成了修剪@文卡特:什么是给J的?j将具有相同的值。我想答案还是一样的。请参见编辑。我正在重新表述我想要的内容。您是否知道每个带索引的\u
为块提供了两个参数?对象和索引。您正在尝试增加对象???仅仅调用对象i
并不能使其成为计数器。实际上,您的代码告诉我们,显示所有属于美术馆的图像都应该显示在活动部分。因此,它将再次以类似堆栈的模式显示所有图像。顺便说一句,你知道旋转木马是如何工作的吗?在项目的div中,它应该增加i的值,这样当活动部分移动到另一个项目时,它将显示另一个图像。它不是那样的。。!!!这就像是从表图像
中搜索属于图库艺术
的图像一样<代码>库
是图像表的一个属性。因此,在我看来,我创建了一个新的视图页面,在其中显示属于Art
gallery的图像。对于所有的画廊也是如此。我假设你知道推特引导的旋转木马的工作原理。因此,类活动项
用于显示数组中的第一个元素。在我的情况下,属于美术馆的第一张图像将显示在类活动项中。无论如何,我没有发现我上面写的代码有任何错误。所以你可以从中理解。我的答案是:循环所有图像,将第一个图像放置在旋转木马的第一个项目中,将所有其他项目放置在另一个项目中。所以我觉得这应该行得通。你试过这个吗?