Возврат 1x1 .gif в качестве ответа в Rails - PullRequest
4 голосов
/ 15 мая 2010

Я создаю приложение 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 ]

6 голосов
/ 17 декабря 2013

Это кажется более простым решением

Источник:

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

вместо рендеринга, звоните

send_data(Base64.decode64("R0lGODlhAQABAPAAAAAAAAAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw=="), :type => "image/gif", :disposition => "inline")
3 голосов
/ 15 мая 2010

Простой вариант:

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

Я думаю, что в / действительно / старых браузерах (IE5, может быть, Netscape?) Это может не сработать, поэтому, если вам нужно их поддерживать, старое школьное решение заключалось в том, чтобы фактически загрузить двоичные данные gif и выложить их вернуться в браузер напрямую с правильным типом контента.

0 голосов
/ 22 июля 2013

Вот мое решение

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