1

我的控制器索引操作中有一个方法,如果第一个或最后一个产品的 是add_product_data,它基本上会更新产品数据。我想在调用该方法之前显示第一个或最后一个产品的 是,以便用户知道为什么请求需要这么长时间。titleniltitleniladd_product_data

我有的:

def index
  if params["rating_set_id"]
    @products = Product.find(:all, :joins => :rating_sets, :conditions => ["rating_set_id = ?", params["rating_set_id"]])
    if @products.first.title.nil? && @products.last.title.nil?
      redirect_to :back, :flash => { :notice => "Updating missing product data..." }
      FetchRec.add_product_data(@products) 
    end

    @rating_set = RatingSet.find(params["rating_set_id"])
    @unique_dept = Product.find_by_sql("SELECT dept FROM products WHERE dept <> '' GROUP BY dept")
  else
    @products = Product.all
  end
end

正如我设置的那样,在添加产品数据并发出请求后会显示闪存消息。发出请求时如何显示 Flash 消息,以及是否add_product_data需要调用该方法。

4

1 回答 1

1

如果您有一个长时间运行的请求,您可以使用诸如Sidekiq 之类的异步运行程序,并在 flash 消息中返回 202(已接受)。在“标准”HTTP/HTML 中无法在请求完成之前显示消息。

于 2013-07-17T17:37:27.107 回答