我目前正在开发一个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文件中执行此操作?
答案 0 :(得分:0)
开始不错。尽管如此。首先,rubyists通常不会以你的方式使用循环。 Ruby非常适合处理闭包,因此每个都是更惯用的表达方式。
<% [0..954].each do |index| %>
其次我不会有一个名为@h的变量。什么是h?另一位程序员是否能够阅读您的代码并了解@h是什么?
第三,ruby提供了一个.nil?方法所以你可以做类似
的事情<% if @h[index].nil? %>
然而,所有这些都无法帮助您获得所需的一切。您似乎想要做的是控制元素在页面上的显示方式。据我所知,您希望元素一次显示一个元素。
睡觉不会有帮助。 Rails将首先在服务器上呈现整页。渲染完成后,它会将渲染的输出发送回客户端。这通过HTTP发生。在呈现整个模板之前,客户端甚至不会看到响应。在服务器上休眠不会改变客户端看到输出的方式,只会使响应变慢。你不应该像这样睡在服务器上。相反,您将需要像任何其他rails模板一样呈现响应,并使用javascript来控制元素在客户端上的显示方式。