[lnkForumImage]
TotalShareware - Download Free Software

Confronta i prezzi di migliaia di prodotti.
Asp Forum
 Home | Login | Register | Search 


 

Forums >

comp.lang.ruby

ruby on rails problem

Ken Fettig

6/18/2005 5:13:00 AM

Hello, I have a Ruby on Rails question. I have used a layout in a
controller, and I have image files referenced in the layout. I have the
image files in the public/images dir. When I reference the controller in a
URL directly ( http://127.0.0.1:300... ), Rails finds the image
files. When I reference it indirectly like the following (
http://127.0.0.1:300... ), Rails does not find the image files. I am
using the Webrick server. Does anyone know what I am doing wrong, or if
there is a bug that I do not know of? How do I work around this?

Thanks Much
Ken


6 Answers

Michael Buffington

6/18/2005 6:49:00 AM

0

The URLs you pasted are identical so I'm not sure how relevant this
answer is, but here goes:

Whenever I reference images, I do so like so:

/images/image.gif (the first / being very important - it indicates
"starting at the base URL" or "from the root").

That way, regardless of what context the layout is executing in, the
browser will always look for the image off the root URL (like
http://127.0.0.1:3000/images...).

On 6/17/05, Ken Fettig <kenfettig@btinet.net> wrote:
> Hello, I have a Ruby on Rails question. I have used a layout in a
> controller, and I have image files referenced in the layout. I have the
> image files in the public/images dir. When I reference the controller in a
> URL directly ( http://127.0.0.1:300... ), Rails finds the image
> files. When I reference it indirectly like the following (
> http://127.0.0.1:300... ), Rails does not find the image files. I am
> using the Webrick server. Does anyone know what I am doing wrong, or if
> there is a bug that I do not know of? How do I work around this?
>
> Thanks Much
> Ken
>
>
>
>


Ken Fettig

6/19/2005 7:43:00 PM

0

Correction: I reference it indirectly like
http://127.0.0.1:3000/stu... .
"Ken Fettig" <kenfettig@btinet.net> wrote in message
news:d90agc02hij@enews2.newsguy.com...
> Hello, I have a Ruby on Rails question. I have used a layout in a
> controller, and I have image files referenced in the layout. I have the
> image files in the public/images dir. When I reference the controller in a
> URL directly ( http://127.0.0.1:300... ), Rails finds the image
> files. When I reference it indirectly like the following (
> http://127.0.0.1:300... ), Rails does not find the image files. I
> am using the Webrick server. Does anyone know what I am doing wrong, or
> if there is a bug that I do not know of? How do I work around this?
>
> Thanks Much
> Ken
>


Ken Fettig

6/19/2005 7:55:00 PM

0

Thank you so much!!!! That did the trick!!!!! Much appreciated!


"Michael Buffington" <michael.buffington@gmail.com> wrote in message
news:7ad4169c0506172348532b7ff4@mail.gmail.com...
The URLs you pasted are identical so I'm not sure how relevant this
answer is, but here goes:

Whenever I reference images, I do so like so:

/images/image.gif (the first / being very important - it indicates
"starting at the base URL" or "from the root").

That way, regardless of what context the layout is executing in, the
browser will always look for the image off the root URL (like
http://127.0.0.1:3000/images...).

On 6/17/05, Ken Fettig <kenfettig@btinet.net> wrote:
> Hello, I have a Ruby on Rails question. I have used a layout in a
> controller, and I have image files referenced in the layout. I have the
> image files in the public/images dir. When I reference the controller in a
> URL directly ( http://127.0.0.1:300... ), Rails finds the image
> files. When I reference it indirectly like the following (
> http://127.0.0.1:300... ), Rails does not find the image files. I
> am
> using the Webrick server. Does anyone know what I am doing wrong, or if
> there is a bug that I do not know of? How do I work around this?
>
> Thanks Much
> Ken
>
>
>
>



Adam P. Jenkins

6/20/2005 6:21:00 PM

0

Michael Buffington wrote:
> The URLs you pasted are identical so I'm not sure how relevant this
> answer is, but here goes:
>
> Whenever I reference images, I do so like so:
>
> /images/image.gif (the first / being very important - it indicates
> "starting at the base URL" or "from the root").
>
> That way, regardless of what context the layout is executing in, the
> browser will always look for the image off the root URL (like
> http://127.0.0.1:3000/images...).

The problem with this solution is it only works if your app is running
as document root, which will be the case if you're running under
Webrick, but not necessarily otherwise. If you want your app to be able
to work correctly even when not installed under document root, use the
image_tag helper function instead of absolute URLs. That is, instead of
writing

<img src="/images/image.gif"/>

Write:

<%= image_tag "image.gif" %>

If your app is installed under somewhere other than document root, this
will still expand to a valid url. See the documentation for the
ActionView::Helpers::AssetTagHelper module for other similar helper
functions for javascript files and stylesheets.

Here's a more general helper function I use to generate links to any
static file. Add this function to the ApplicationHelper module in
app/helpers/application_helper.rb:

def link_to_file(name, file, *args)
if file[0] != ?/
file = "#{@request.relative_url_root}/#{file}"
end
link_to name, file, *args
end

Which you'd use like:

<%= link_to_file "Installer Program", "installer.exe" %>

Which would generate

<a href="/installer.exe">Installer Program</a>

under Webrick, but if your app is installed under Apache using FCGI, at
say http://your.host.co..., then the generated link would be

<a href="/yourapp/public/installer.exe">Installer Program</a>

without any changes to your code.

Ryan Leavengood

6/20/2005 7:28:00 PM

0

Adam P. Jenkins said:
>
> Which you'd use like:
>
> <%= link_to_file "Installer Program", "installer.exe" %>

If that isn't somewhere in the Rails docs, wiki or FAQ, it should be. Very
cool. In fact, I'd lobby that should be added to Rails itself.

Ryan


Adam P. Jenkins

6/20/2005 8:43:00 PM

0

Ryan Leavengood wrote:
> Adam P. Jenkins said:
>
>>Which you'd use like:
>>
>> <%= link_to_file "Installer Program", "installer.exe" %>
>
>
> If that isn't somewhere in the Rails docs, wiki or FAQ, it should be. Very
> cool. In fact, I'd lobby that should be added to Rails itself.
>
> Ryan
>
>

Thanks. I myself was surprised to not find something equivalent in the
ActionView::Helpers::AssetTagHelper module. I've added a page to the
Wiki describing this:

http://wiki.rubyonrails.com/rails/show/HowToLinkTo...

Adam