以下是我的观点的一部分,如果有必要,可以很容易地将其部分放入。
<% if order_item.still_downloadable == true %>
<%= "Photo ##{order_item.gallery_photo.id} - " %>
<%= link_to "Download here", download_order_order_item_path(@order, order_item) %>
• You may download this <%= pluralize(5 - order_item.download_count, 'more time') %>.
<% else %>
<%= "Photo ##{order_item.gallery_photo.id} - #{order_item.title}" %>
• 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
刷新该部分视图(甚至整个页面)的最佳方法是什么,以便更新下载次数?
答案 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"