如何在rails 3中呈现视图后调用方法

时间:2012-04-22 23:55:54

标签: ruby-on-rails ruby-on-rails-3

我的任务大约需要20到30秒。我希望在呈现视图后立即运行此任务。我希望此任务的输出存储在会话变量中。什么是最简单的方法来实现它3.

解释我需要什么。我正在向用户显示推文列表(这是呈现的视图)他们必须经历它们。我希望在渲染此视图后调用一个方法,该方法将采用相同的推文并对它们进行聚类(20-30秒进程)。我应该在会话中获得聚类的结果,以便我可以在下一页显示它们。

我该怎么做?

2 个答案:

答案 0 :(得分:1)

您应该能够在呈现视图的控制器方法中执行此操作。只需在'render'调用后添加代码即可。例如:

  def index
    @tweets = Tweet.all

    respond_to do |format|
      format.html # index.html.erb
      format.json { render json: @tweets }
    end
    # do something with tweets
    puts "#{@tweets}"
  end

答案 1 :(得分:1)

这就是我解决问题的方法

  1. 我使用resque作为后台任务。我在调用渲染之前将任务排队。
  2. 我将后台工作程序编码为将聚类结果放在redis缓存中。
  3. 应该显示集群的控制器,我从redis读取结果,反序列化并渲染它们。
  4. 它并不完美,但对于研究反馈收集工具而言,它已经足够快了。