location of images

hello all,

I'm new to RoR. I am reading Agile Development etc. and I have completed a tutorial that explains the differences between rails 2.0 and rails 2.1.

Still some questions are unanswered by the book. I hope you can help me with the most intriguing one: I have created a scaffold for model 'movie'. After some iterations I have manually added a admin controller with views. It appears that the image-links from the movie-view result in a get from the image in the directory public/images, whereas the image links from the admin views get the images another place.

Can you explain WHY this happens and what I can do to p be able to - use public/images in both cases - use the same subdirectory of a view directory in both cases?

thanks very much! Ruud

Please can u paste the code in question and i will tell u, thanks.

Rails by default will look into the public/images for any image name u give.

If u have yr image in a separate folder like public/my_images folder then in yr view file u need to mention the image path as "my_images/image.jpg"

in fact, I don't use the login_controller which uses the admin layout. What's in a name.

There is a difference between a list of the movies from the login view and the movies view. The admin layout includes the following lines:

        <% if session[ :user_id ] %>             <% gebruiker = User.find_by_id( session[ :user_id]).naam - %>             <h1><%= gebruiker -%></h1>             <%= link_to( 'overzicht films', :action => 'list_movies' ) -%><br/>         <% else %>             <h1>no user</h1>         <% end %>

I believe the issue is with the way you're rendering the image tag. This line:

<td><img src="images/<%= movie.one_sheet_url %>"/></td>

Is a *relative path*. You should be able to use an absolute path "/ images/..." which will be absolute with respect to your Rails application.

It's probably also worth mentioning that, if you're storing images in the standard /public/images folder, you can use a rails helper:

<td><%= image_tag move.one_sheet_url, :alt=>"#{movie.name} pic" %></

I believe the issue is with the way you're rendering the image tag. This line:

<td><img src="images/<%= movie.one_sheet_url %>"/></td>

Is a *relative path*. You should be able to use an absolute path "/ images/..." which will be absolute with respect to your Rails application.

Yes, that is true. It IS relative. I am going to implement a helper function as you suggested. That is much better. But I still would like to know why movie.one_sheet_url() gives me another result when called from two different locations (in this case views/movies/index.html.erb and views/ and views/login/list_movies.html.erb)

Rails has so much magic going on that a newbie like me gets a bit dizzy.

It's probably also worth mentioning that, if you're storing images in the standard /public/images folder, you can use a rails helper:

<td><%= image_tag move.one_sheet_url, :alt=>"#{movie.name} pic" %></ >

Thanks, I wil certainly try this. Good opportunity to have a look at helper functions as well!

Ruud

Because it's RELATIVE so if in one case it's relative to views/movies, and in the other to views/login

+1... sorry I should have been more specific.