Ruby on Rails: использование send_data с вызовом Ajax отображает ascii вместо изображения - PullRequest
0 голосов
/ 03 мая 2011

Я читаю изображение в вызове link_to_remote, а затем использую send_data Я отправил прочитанное изображение как

:type => "image/png" :disposition => 
"inline"

но когда тег div обновляется, я вижу только символы ascii но если я делаю ту же операцию, используя обычный вызов (link_to), я вижу это функционирует нормально. Может кто-нибудь объяснить, пожалуйста?

мой взгляд:

<%= link_to_remote("flip",
     :update => "img",
     :url => {:action => "flip"}
     )%>
<div id="img"></div>

Контроллер:

def flip
   filename="/public/picture/filename/1/scaler_1.jpg"
    img=File.read(filename)
    ilist = Magick::ImageList.new
    @picture=ilist.from_blob(img)
    @picthumb=@picture.flip!
    @out=@picthumb.to_blob
    send_data(@out,:filename =>'workshopimage', :type => "image/png", 
:disposition => "inline")
end

выше не работает но с моей точки зрения как

<%= link_to("flip",
     :action => "flip"
     )%>

это работает .... не значит ли это, что мне нужно сделать что-то еще в случае ajax call .. я что-то упустил ..?

Спасибо Shaunak

PS: вопрос выше - скопировать вставку другого сообщения другим пользователем на другом форуме, но без ответа. Моя проблема точно такая же, только я использую грубые графики. Взято из: http://lists.rubyonrails.org/pipermail/rails/2006-May/041499.html

Ответы [ 3 ]

2 голосов
/ 03 мая 2011

Вы не хотите link_to_remote для этого, вам нужно обновить атрибут src изображения, чтобы он указывал на URL:

link_to_function "flip", "myImage.src = '" + url_for(:action => "flip") + "'"
1 голос
/ 05 мая 2011

Вот как я могу решить эту проблему, используя подсказку, данную robbit:

<div id = "graphDiv">

<%= link_to_function("show", " var i = document.createElement('img'); i.src = '" + show_graph_hcfcd_url(1) + "'; $(graphDiv).appendChild(i); ") %>
0 голосов
/ 29 октября 2011

Ответ Роббрита очень полезен, но я считаю, что решение просто подходит для Chrome и сбоя в IE8 и Firefox. Когда я нажимаю на ссылку, изображение не может быть обновлено. Каково ваше мнение, особенно в IE и Firefox?

Я нашел решение, все еще используя предоставленный метод robbrit. Использование src=url?+Math.random() подойдет для IE8 и Firefox.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...