2010-05-15 24 views
3

我建立一個Rails應用程序,並在外面網站的轉化跟蹤的響應。我希望允許用戶在其轉化頁面中粘貼圖片代碼(例如AdWords),並且每當請求該圖片時,我的應用中就會註冊一次轉化。返回一個1x1 .gif注意:在Rails的

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圖像。有一個更好的方法嗎?

+0

不存在或破碎? – 2010-05-15 08:52:07

回答

3

簡單的選擇:

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

我覺得在/真的/舊的瀏覽器可能無法正常工作(IE5,Netscape的可能?) ,所以如果你需要支持這些,舊的解決方案是實際加載gif的二進制數據,然後直接用正確的內容類型將它吐出到瀏覽器。

+0

這對我來說工作得很好 – Avishai 2013-12-16 22:15:07

0

這裏是我的解決方案

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

這似乎是一個簡單的解決方案

來源:

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

,而不是渲染,稱

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