【问题标题】:Returning a 1x1 .gif as a response in Rails在 Rails 中返回 1x1 .gif 作为响应
【发布时间】:2011-02-19 20:06:05
【问题描述】:

我正在构建一个在外部网站上进行转化跟踪的 Rails 应用。我希望允许用户在他们的转换页面(如 AdWords)中粘贴图像标记,并且每当请求该图像时,都会在我的应用中注册转换。

respond_to do |format|
  if @conversion.save
    flash[:notice] = 'Conversion was successfully created.'
    format.html { redirect_to(@conversion) }
    format.xml  { render :xml => @conversion, :status => :created, :location => @conversion }
    format.js { render :json => @conversion, :status => :created }
    format.gif { head :status => :ok }
  else
    format.html { render :action => "new" }
    format.xml  { render :xml => @conversion.errors, :status => :unprocessable_entity }
  end
end    

这样,浏览器会得到一个不存在的 .gif 图像。有一个更好的方法吗?

【问题讨论】:

    标签: ruby-on-rails tracking google-ads-api


    【解决方案1】:

    这似乎是一个更简单的解决方案

    来源:

    http://forrst.com/posts/Render_a_1x1_Transparent_GIF_with_Rails-eV4
    

    代替渲染,调用

    send_data(Base64.decode64("R0lGODlhAQABAPAAAAAAAAAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw=="), :type => "image/gif", :disposition => "inline")
    

    【讨论】:

      【解决方案2】:

      简单的选项:

      格式.gif { redirect_to '/images/1x1.gif' }

      我认为在 /really/ 旧浏览器(IE5,Netscape 可能?)中这可能不起作用,所以如果你需要支持这些,老派的解决方案是实际加载 gif 的二进制数据并将其吐出使用正确的内容类型直接返回浏览器。

      【讨论】:

        【解决方案3】:

        这是我的解决方案

        format.gif { send_data Rails.root.join('app', 'assets', 'images', '1x1.gif') }
        

        【讨论】:

          猜你喜欢
          • 2011-04-16
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-10-19
          • 1970-01-01
          • 2011-08-10
          • 2012-05-04
          • 2023-04-06
          相关资源
          最近更新 更多