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

Ruby on rails 如何在rails 3中呈现视图后调用方法,ruby-on-rails,ruby-on-rails-3,Ruby On Rails,Ruby On Rails 3,我有一个任务,大约需要20-30秒。我希望在渲染视图后立即运行此任务。我希望此任务的输出存储在会话变量中。最简单的方法是什么 确切地解释我需要什么。我向用户显示了一个tweet列表(这是呈现的视图),用户必须浏览这些tweet。我希望在呈现此视图后调用一个方法,该方法将接收相同的tweet并对它们进行集群(20-30秒的过程)。我应该在会话中有集群的结果,以便在下一页中显示它们 我该怎么做 您应该能够在渲染视图的控制器方法中执行此操作。只需在“render”调用之后添加代码。例如: def

我有一个任务,大约需要20-30秒。我希望在渲染视图后立即运行此任务。我希望此任务的输出存储在会话变量中。最简单的方法是什么

确切地解释我需要什么。我向用户显示了一个tweet列表(这是呈现的视图),用户必须浏览这些tweet。我希望在呈现此视图后调用一个方法,该方法将接收相同的tweet并对它们进行集群(20-30秒的过程)。我应该在会话中有集群的结果,以便在下一页中显示它们


我该怎么做

您应该能够在渲染视图的控制器方法中执行此操作。只需在“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

这就是我解决问题的方法

  • 我在后台任务中使用了
    resque
    。在调用渲染之前,我将任务排入队列
  • 我对后台工作程序进行编码,以将集群结果放入redis缓存中
  • 应该显示集群的控制器,我从redis读取结果,反序列化并呈现它们

  • 它并不完美,但对于一个研究反馈收集工具来说速度足够快。

    如果视图已经呈现,任务如何将结果存储到会话中?(请记住,会话现在默认情况下作为cookie处理…)在我的情况下,会话由active_record处理。即使我可以运行一个方法,我也可以。现在我将把结果存储在一些简单的tmp文件中。我想我的答案是使用Resque或任何后台工作。