0

我在我的应用程序中遇到了这个错误,移动 safari 中的 ajax 在收到回复后停止工作Content-Disposition:attachment

我想继续发送 disposition:attachment 到桌面浏览器和非 iOS 移动设备,同时在 iOS 上切换到 disposition:inline。我需要在几个不同的控制器操作中执行此操作。

除了将这些类型的块放在所有地方之外,还有一种优雅的方法吗?

if request.env['HTTP_USER_AGENT'] =~ /iPad/
    disposition = :inline
else 
    disposition = :attachment
end
4

1 回答 1

2

只需在应用程序控制器中创建一个before_filter将一劳永逸地设置的控制器!

class ApplicationController < ActionController::Base
  before_filter :set_content_disposition

  def set_content_disposition
    if request.env['HTTP_USER_AGENT'] =~ /iPad/
      response.headers['Content-Disposition'] = 'inline'
    elsif params[:format].in?(['pdf', 'other_format', 'other_format2'])
      response.headers['Content-Disposition'] = 'attachment'
    end
  end
  #Rest of application controller code ...
end
于 2012-08-02T16:07:53.733 回答