2013-07-17 1 views
1

У меня есть метод в моем указательном указателе контроллера, add_product_data, который в основном обновляет данные о продукте, если title первого или последнего продукта nil. Я бы хотел, чтобы сообщение флэш-сообщения отображалось, если title первого или последнего продукта nil, до вызова метода add_product_data, чтобы пользователь знал, почему запрос занимает так много времени.Rails - отображать флэш-уведомление перед запуском метода

Что у меня есть:

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 

Как он у меня установлен, то отображается флэш сообщений после того, как добавили данные продукта и запрос сделан. Как я могу отобразить флэш-сообщение, когда запрос сделан, и если необходимо вызвать метод add_product_data.

+0

Если вы хотите запустить что-то как отдельный процесс, сделайте это - вы не понимаете, как работает стандартный синхронный веб-материал. –

ответ

1

Если у вас длинный запрос, вы можете использовать асинхронный бегун, такой как Sidekiq и вернуть сообщение 202 (принятое) с помощью флэш-сообщения. В «стандартном» HTTP/HTML нет способа показать сообщение до завершения запроса.