Gustav Stockholm
2008-Jan-06 14:02 UTC
respond to REST-request with image-file (no XML etc.)
Hi!
I''m using REST to serve content (images and SWFs) to a flash-file.
Depending on the IP of the user, I would like to serve different
content. To get the IP I use ''request.remote_ip, followed by an if
statement to return the correct content.
What I don''t know is how do I serve just the content (no XML, just
content.jpg) as a reply from my Rails-controller? The content is not
stored in a database, but in my public directory.
def show
ip = request.remote_ip
if ip=x
return ''/content/hello.jpg''
else
return ''/content/goodbye.jpg''
end
respond_to do |format|
format.html # bbprivat.html.erb
format.xml { render :xml => @ip }
end
end
Many thanks for all the help I can get!
--
Posted via http://www.ruby-forum.com/.
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"Ruby on Rails: Talk" group.
To post to this group, send email to
rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org
To unsubscribe from this group, send email to
rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org
For more options, visit this group at
http://groups.google.com/group/rubyonrails-talk?hl=en
-~----------~----~----~----~------~----~------~--~---
Wildtangent
2008-Jan-07 10:03 UTC
Re: respond to REST-request with image-file (no XML etc.)
Hi Gustav,
you can use the send_file command to return binary data to the client
e.g.
respond_to do |format|
format.html { ip == x ? send_file ''/content/hello.jpg'',
:filename =>
''hello.jpg'' : send_file
''/content/goodbye.jpg'', :filename =>
''goodbye.jpg'' }
end
think that will work , you might want to register a new content type
for the respond_to block so it ''responds_to'' .jpg as well.
Gustav Stockholm wrote:> Hi!
>
> I''m using REST to serve content (images and SWFs) to a flash-file.
> Depending on the IP of the user, I would like to serve different
> content. To get the IP I use ''request.remote_ip, followed by an if
> statement to return the correct content.
>
> What I don''t know is how do I serve just the content (no XML, just
> content.jpg) as a reply from my Rails-controller? The content i s not
> stored in a database, but in my public directory.
>
> def show
>
> ip = request.remote_ip
>
> if ip=x
> return ''/content/hello.jpg''
> else
> return ''/content/goodbye.jpg''
> end
>
> respond_to do |format|
> format.html # bbprivat.html.erb
> format.xml { render :xml => @ip }
> end
>
> end
>
> Many thanks for all the help I can get!
> --
> Posted via http://www.ruby-forum.com/.
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"Ruby on Rails: Talk" group.
To post to this group, send email to
rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org
To unsubscribe from this group, send email to
rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org
For more options, visit this group at
http://groups.google.com/group/rubyonrails-talk?hl=en
-~----------~----~----~----~------~----~------~--~---
Gustav Stockholm
2008-Jan-07 13:02 UTC
Re: respond to REST-request with image-file (no XML etc.)
> respond_to do |format| > format.html { ip == x ? send_file ''/content/hello.jpg'', :filename => > ''hello.jpg'' : send_file ''/content/goodbye.jpg'', :filename => > ''goodbye.jpg'' } > endI''ve tried: def show ip = request.remote_ip pattern = x if pattern.match(ip) @file = ''/folder/y.swf'' else @file = ''/folder/x.swf'' end respond_to do |format| format.html { send_file @file } end end This returns a returns a "Cannot read file /folder/y.swf" error message. I''ve also tried: respond_to do |format| format.html { render :file => @file } end This returns a "No such file or directory - /folder/y.swf", although "http://localhost:3000/folder/y.swf" works just fine. When substituting the @file-construct for: format.html { send_file ''/folder/y.swf'', :filename => ''y.swf'' } but get the same result...> think that will work , you might want to register a new content type > for the respond_to block so it ''responds_to'' .jpg as well.Where do I register new content types in the respond_to-block? I''m a REST-noob, in case that wasn''t obvious ;) Many thanks! g. -- Posted via http://www.ruby-forum.com/. --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
Gustav Stockholm
2008-Jan-07 13:36 UTC
Re: respond to REST-request with image-file (no XML etc.)
> This returns a returns a "Cannot read file /folder/y.swf" error message.I solved it by using the full system-file path: render :file => ''/Users/gustav/Sites/sandbox/public/folder/y.swf'' Anyone know how make Rails understand to use the public-folder as root? Also, since I get plenty of weird characters on screen, rather than the actual swf-file, I suppose I need to register swf to work with the respond_to block. send_file ''/Users/gustav/Sites/sandbox/public/folder/y.swf'' works just as good for that matter, although I get prompted to save file to disk. -- Posted via http://www.ruby-forum.com/. --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---