Ruby on rails 在操作之前和之后呈现文本都有效

Ruby on rails 在操作之前和之后呈现文本都有效,ruby-on-rails,Ruby On Rails,我有一个有时执行时间更长的应用程序。如果可能,我如何在操作执行之前呈现占位符文本,例如“处理…”,并用该操作的结果替换页面,因为每个操作只能发出一次呈现?render方法的:text选项接受一个Proc对象: render :text => proc { |response, output| 5.times do |i| output.write("Hello, friend\n") sleep 3 end } 您的示例可能如下所示: render :t

我有一个有时执行时间更长的应用程序。如果可能,我如何在操作执行之前呈现占位符文本,例如“处理…”,并用该操作的结果替换页面,因为每个操作只能发出一次呈现?

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) 
 }

如您所见,这里的“输出”是一个类似于IO的可写对象。但是,你还是应该尽可能避免使用它。您可以在此处轻松地使用javascript显示“Processing…”消息,然后在获得要显示的结果后从控制器接收xhr返回

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) 
 }

如您所见,这里的“输出”是一个类似于IO的可写对象。但是,你还是应该尽可能避免使用它。您可以在这里用javascript轻松地显示“Processing…”消息,然后在有结果显示后从controller接收xhr返回

您不能在controller中执行此操作。这里最简单的解决方案是对短操作使用Ajax调用,或对长时间操作使用Ajax轮询。您不能在controller中执行此操作。这里最简单的解决方案是对短操作使用Ajax调用,或者对长时间操作使用Ajax轮询。非常感谢,我想我要走xhr路线。非常感谢,我想我要走xhr路线。