在动作之前和之后呈现文本

时间:2011-04-11 13:19:01

标签: ruby-on-rails

我的应用程序有时会执行更长时间的操作。如果可能的话,如果可能的话,我可以在执行操作之前渲染占位符文本,例如“处理...”,并将该页面替换为该操作的结果,前提是每个操作只能发出一次渲染?

1 个答案:

答案 0 :(得分:1)

render方法的:text选项接受Proc对象:

render :text => proc { |response, output|
   5.times do |i|
     output.write("Hello, friend\n")
     sleep 3
   end
}

您的示例可能如下所示:

 render :text => proc {|response, output|
    output.wirte("Processing..")
    results = perform_something
    output.write(results) 
 }

如您所见,这里的'output'是一个可写的IO类对象。但是,你应该尽可能避免使用它。您可以在此处轻松地使用javascript显示“正在处理...”消息,然后在显示结果后从控制器接收xhr