如何在用户单击下载链接后刷新页面上的元素?

时间:2011-11-18 14:05:51

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

以下是我的观点的一部分,如果有必要,可以很容易地将其部分放入。

<% if order_item.still_downloadable == true %>
  <%= "Photo ##{order_item.gallery_photo.id} - " %>
  <%= link_to "Download here", download_order_order_item_path(@order, order_item) %>
  &bull; You may download this <%= pluralize(5 - order_item.download_count, 'more time') %>.
<% else %>
  <%= "Photo ##{order_item.gallery_photo.id} - #{order_item.title}" %>
  &bull; You may not download this file any more.
<% end %>

以下是order_items控制器中的下载操作。

def download
  @order_item = OrderItem.find(params[:id])
  @gallery_photo = GalleryPhoto.find(@order_item.gallery_photo_id)
  @order_item.update_attribute(:download_count, @order_item.download_count += 1)
  send_file @gallery_photo.image.path(:original), :x_sendfile => true, :type => 'image/jpg'
end

刷新该部分视图(甚至整个页面)的最佳方法是什么,以便更新下载次数?

2 个答案:

答案 0 :(得分:0)

我不确定这是否是最佳解决方案,但您可以这样做:

$('.download').click(function(){
  setTimeout("window.location.reload()",1000);//or other value
})

或者我鼓励你创建一个函数,在有人下载后发送xhr请求,并使用下载次数更新元素。

答案 1 :(得分:0)

我做了一个下载操作并强制显示页面没有缓存,所以当用户返回到显示页面时,浏览器被迫重新加载它。在节目动作中:

response.headers["Cache-Control"] = "no-cache, no-store, max-age=0, must-revalidate"
response.headers["Pragma"] = "no-cache"
response.headers["Expires"] = "Fri, 01 Jan 1990 00:00:00 GMT"