Ok, that makes sense. So you either need to add a route for user_game, or else change commentable_url to produce member_game (if you'd prefer that route). So you could add something like:
map.resources :games, :path_prefix => "/:user_id", :name_prefix => "user_" Or: map.user_game '/:user_id/game/:id', :controller => 'game', :action => "show" (or lots of other methods, probably). See: http://apidock.com/rails/ActionController/Resources/resource and http://apidock.com/rails/ActionController/Resources/resource Thanks, Bruno On Mon, Jun 1, 2009 at 10:48 AM, mike muldoon <[email protected]>wrote: > > My use case relies on having the Member class inherit from User, and > Member own a bunch of other classes which I would like to be > commentable, including Game. > > I would like comment.recipient set, in order to facilitate email > notifications, etc. (I tested leaving it unset, and that broke some > views downstream. I will pursue that approach further if need be.) > > So, I assert that user_game_url is appropriate, but the route fails. > > Do I need to add a route to make that work? I haven't found a matching > route in the output from rake routes, but don't know if there's some > other mechanism at work. > > I may be lacking some other clue, which is why I'm describing the use > case. Thanks for your patience. > > On Mon, Jun 1, 2009 at 7:09 AM, Bruno Bornsztein > <[email protected]> wrote: > > I'm confused. You want user_game_url and commentable_url is returning > > user_game_url? What's the problem? > > > > > > On Sat, May 30, 2009 at 3:11 PM, mike muldoon <[email protected]> > > wrote: > >> > >> I was already in there, trying various permutations for just such a > >> Game special case. This generates 'member_game_url': > >> > >> def commentable_url(comment) > >> if comment.recipient && comment.commentable > >> if comment.commentable_type == "Game" > >> debugger > >> polymorphic_url([comment.commentable.member, > >> > >> comment.commentable])+"#comment_#{comment.id}" > >> elsif ... > >> > >> member_game_url has no route because Member is just a model, and has > >> no controller. Put another way, Members don't own Photos, Users do. > >> The desired route is user_game_url, which has me thinking that maybe > >> LostyJai's suggestion would be appropriate, as this isn't the result > >> of a bug in polymorphic_url. > >> > >> Thoughts? > >> > >> > >> On Fri, May 29, 2009 at 6:33 PM, Bruno Bornsztein > >> <[email protected]> wrote: > >> > Look at commentable_url in BaseHelper. It calls: > >> > polymorphic_url([comment.recipient, > >> > comment.commentable])+"#comment_#{comment.id}" > >> > So it uses the recipient of the comment (which is a user) for comments > >> > on > >> > anything other than users. You can overwrite that method to make an > >> > exception for Games, something like (pseudo-code): > >> > if comment.commentable_type == "Game" > >> > polymorphic_url([comment.commentable.member, comment]) > >> > #comment.commentable should return a Game > >> > end > >> > Good luck, > >> > Bruno > >> > On Fri, May 29, 2009 at 8:06 PM, LostyJai <[email protected]> > >> > wrote: > >> >> > >> >> Have you defined your model as a subclass of user in routes? > >> >> > >> >> On May 30, 8:52 am, angrysponge <[email protected]> wrote: > >> >> > I have a Game model which I would like to enable comments for. > Games > >> >> > are owned by Members, which is a subclass of User. The relevant > model > >> >> > code needed thus far: > >> >> > > >> >> > class Game < ActiveRecord::Base > >> >> > belongs_to :member > >> >> > acts_as_commentable > >> >> > def owner > >> >> > self.member.becomes(User) > >> >> > end > >> >> > > >> >> > class Member < User > >> >> > has_many :games > >> >> > > >> >> > Saving a comment for a Game generates this error: > >> >> > NoMethodError in CommentsController#create > >> >> > undefined method `user_game_url' for > #<CommentsController:0xb6daef9c> > >> >> > > >> >> > When adding a comment to a Photo, polymorphic_url() returns > >> >> > 'user_photo_url', so 'user_game_url' looks reasonable, except that > >> >> > Users don't own Games, Members do. > >> >> > > >> >> > Am I missing some route details for my Game model? > >> >> > > >> >> > Any suggestions? > >> >> > Mike > >> >> > >> > > >> > > >> > > > >> > > >> > >> > > > > > > > > > > > > > --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "CommunityEngine" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/communityengine?hl=en -~----------~----~----~----~------~----~------~--~---
