Hi, I have a question about routing and nested resources. I have an app
with Photos that belong to Users via a many2one relationship. The URL:
http://localhost:3000/photos
lists all photos (from all users). Clicking on a random photo from this
listing should send one to f ex:
http://localhost:3000/users/2/photos/10
Because I have this in my routes.rb:
map.resources :users, :member => { :enable => :put } do |users|
users.resources :photos, :name_prefix => ''user_'',
:controller => ''user_photos'',
:member => { :add_tag => :put, :remove_tag
=> :delete }
end
However when I load http://localhost:3000/photos I get this error
message:
user_photo_url failed to generate from {:controller=>"user_photos",
:action=>"show", :user_id=>nil, :id=>#<Photo id: 2,
user_id: nil, title:
nil, body: nil, created_at: "2008-10-27 14:26:32", etc
Extracted source (around line #2):
1: <li>
2: <%= link_to
image_tag(photo.public_filename(''thumb'')),
user_photo_path(:user_id => photo.user, :id => photo) %>
3: </li>
The above partial, _photo.rhtml, is what causes the error.
This code has worked fine up until I refactored it to function with
will_paginate instead of classic_pagination. I haven''t touched the
routing declarations or the _photo.rhtml partial.
Any help will be appreciated!
/ Vahagn
--
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
-~----------~----~----~----~------~----~------~--~---
Looking at the error message, it seems to be saying that user_id is nil ... which tells me that you don''t have a user set for that photo and it can''t generate the URL without knowing the id of the user. On Oct 28, 5:48 am, Vahagn Hayrapetyan <rails-mailing-l...@andreas- s.net> wrote:> Hi, I have a question about routing and nested resources. I have an app > with Photos that belong to Users via a many2one relationship. The URL: > > http://localhost:3000/photos > > lists all photos (from all users). Clicking on a random photo from this > listing should send one to f ex: > > http://localhost:3000/users/2/photos/10 > > Because I have this in my routes.rb: > > map.resources :users, :member => { :enable => :put } do |users| > users.resources :photos, :name_prefix => ''user_'', > :controller => ''user_photos'', > :member => { :add_tag => :put, :remove_tag > => :delete } > end > > However when I loadhttp://localhost:3000/photosI get this error > message: > > user_photo_url failed to generate from {:controller=>"user_photos", > :action=>"show", :user_id=>nil, :id=>#<Photo id: 2, user_id: nil, title: > nil, body: nil, created_at: "2008-10-27 14:26:32", etc > > Extracted source (around line #2): > > 1: <li> > 2: <%= link_to image_tag(photo.public_filename(''thumb'')), > user_photo_path(:user_id => photo.user, :id => photo) %> > 3: </li> > > The above partial, _photo.rhtml, is what causes the error. > > This code has worked fine up until I refactored it to function with > will_paginate instead of classic_pagination. I haven''t touched the > routing declarations or the _photo.rhtml partial. > > Any help will be appreciated! > > / Vahagn > -- > Posted viahttp://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@googlegroups.com For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
@Bobnation:
Thanks - this is also what I take home from the error message - I just
don''t understand where the user for a photo should be instantiated. In
my photos_controller, I have
@photos = Photo.paginate_by_sql [''select * from photos''],
:page => params[:page],
:per_page => 10
this uses will_paginate and it fails like I described in the first post.
However if I switch to this:
#old controller, uses classic_pagination
photos_count = Photo.count(:conditions => ''thumbnail IS
NULL'')
@photo_pages = Paginator.new(self, photos_count, 9, params[:page])
@photos = Photo.find(:all,
:conditions => ''thumbnail IS
NULL'',
:order => ''created_at DESC'',
:limit => @photo_pages.items_per_page,
:offset => @photo_pages.current.offset
)
Then the photos and the generated urls work fine, but the pagination
links don''t.
/ Vahagn
Bobnation wrote:> Looking at the error message, it seems to be saying that user_id is
> nil ... which tells me that you don''t have a user set for that
photo
> and it can''t generate the URL without knowing the id of the user.
>
> On Oct 28, 5:48�am, Vahagn Hayrapetyan <rails-mailing-l...@andreas-
--
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@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/rubyonrails-talk?hl=en
-~----------~----~----~----~------~----~------~--~---