2015-12-04 62 views
0

我目前正在研究一個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

好的開始。幾件事情,但。首先,紅寶石主義者通常不會以你所擁有的方式使用循環。 Ruby在處理閉包方面很出色,所以每一個都是更加習慣的表達。

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

其次,我不會有一個名爲@h的變量。什麼是h?另一位程序員能夠讀懂你的代碼並理解@h是什麼嗎?

第三,紅寶石提供了一個.nil?方法,所以你可以這樣做

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

這些然而,所有不會幫助你得到什麼,你需要做。你似乎想要做的是控制元素在你的頁面上顯示的方式。據我所知你想要元素一次顯示一個。

睡覺沒有幫助。 Rails將首先在服務器上呈現整個頁面。一旦它完成渲染,它將把渲染的輸出發送回客戶端。這通過HTTP發生。在整個模板呈現之前,客戶端甚至不會看到響應。睡在服務器上不會改變客戶端看到輸出的方式,只會使響應變慢。你不應該像這樣睡在服務器上。相反,您需要像使用其他任何rails模板一樣呈現響應,並使用javascript來控制元素在客戶端上的顯示方式。

+0

謝謝! 這是一個好的開始;) – plantran

+0

讓我知道你是否想擴大答案。 – Stewart

+0

其實它主要是開始測試一些東西。 現在我每隔一秒用ajax刷新頁面的一部分,對我的情況更好!但是,無論如何感謝:D – plantran