在Rails中返回1x1 .gif作为响应

时间:2010-05-15 08:50:45

标签: ruby-on-rails tracking google-adwords

我正在构建一个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图像。有一个更好的方法吗?

3 个答案:

答案 0 :(得分:6)

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

来源:

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

而不是渲染,请调用

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

答案 1 :(得分:3)

简单选项:

format.gif {   redirect_to'/ images / x1.gif' }

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

答案 2 :(得分:0)

这是我的解决方案

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