使用循环每秒显示一个项目

时间:2015-12-04 04:12:52

标签: ruby-on-rails ruby-on-rails-4

我目前正在开发一个Rails项目,我正试图在我的HTML文件中创建一个循环。

@h是我在控制器中创建的哈希。

<% for @i in 0..954 do %>
    <% if @h[@i.to_s] != nil%>
            <%= render 'static_pages/home_data' %>
    <% end %>
<% end %>

此代码可以工作并显示我想要的元素。

事情是,我想让它每秒钟显示一次。我试图放<% sleep 1 %>,但正如预测的那样,它并没有像那样工作......

有没有办法直接在我的HTML文件中执行此操作?

1 个答案:

答案 0 :(得分:0)

开始不错。尽管如此。首先,rubyists通常不会以你的方式使用循环。 Ruby非常适合处理闭包,因此每个都是更惯用的表达方式。

<% [0..954].each do |index| %>

其次我不会有一个名为@h的变量。什么是h?另一位程序员是否能够阅读您的代码并了解@h是什么?

第三,ruby提供了一个.nil?方法所以你可以做类似

的事情
<% if @h[index].nil? %>

然而,所有这些都无法帮助您获得所需的一切。您似乎想要做的是控制元素在页面上的显示方式。据我所知,您希望元素一次显示一个元素。

睡觉不会有帮助。 Rails将首先在服务器上呈现整页。渲染完成后,它会将渲染的输出发送回客户端。这通过HTTP发生。在呈现整个模板之前,客户端甚至不会看到响应。在服务器上休眠不会改变客户端看到输出的方式,只会使响应变慢。你不应该像这样睡在服务器上。相反,您将需要像任何其他rails模板一样呈现响应,并使用javascript来控制元素在客户端上的显示方式。