2012-03-08 122 views
1

我的应用程序必须在页面的第一个“显示”操作上执行相当耗时的操作。 我在第一秒钟想要展示的app/views/layouts/application.html.erb中有一定的布局,这样一个微调消息就会出现在这个布局中,让用户知道操作需要一些时间才能完成。此操作完成后,我想用真实内容替代此消息,如果可能,请通过AJAX更改此消息,但我不介意暂时刷新页面。使用Ruby on Rails预加载布局

我在我的节目中有这个动作,昂贵的过程是'load_suggestions'(约5秒)。

respond_to do |format| 
     format.html do 
     if @issue.suggestions == [] 
      load_suggestions 
     end 
     end 
     format.xml { render :xml => @issue } 
     format.js 
     end 

我相信这个帖子 - Show loading screen while performing task in Rails 3 - 有一些我想要完成的有趣的信息。基本上我会在views/issues/show.js.erb中包含这个javascript函数。问题是,如果我把它包括在内,每一次都会被调用,而这不是我打算做的。

任何建议,线索,指导?

回答

0

您可以尝试新的rails streaming api并在您的其他东西加载之前呈现一些等待的JavaScript代码。

我不会认为你的方法是一个好主意。相反,我会尝试将缓慢的东西放在后台,并在完成后使用ajax进行检索。

另一种方法是在启动应用程序之前加载这些东西,然后进行一些“热身”。例如在初始化器中。

+0

我正在使用Rails 3,任何可能的方式来做流?这听起来很棒 – eLobato 2012-03-08 20:18:15

+0

Rails 3.什么?它与轨道3.1引入http://guides.rubyonrails.org/3_1_release_notes.html – phoet 2012-03-09 07:02:17

+0

3.0不幸的是 – eLobato 2012-03-09 19:52:28