So the app I''m working on has things that we refer to with a slug (let''s pretend they are blog entries). If one has the proper URL of the form (example) www.mydomain.com/blogthing/display/666, they can enter that in their browser, and the rails app will dutifully go there and display blogthing number 666. All is well. Now suppose somebody is browsing the blogthings and happens upon 666. He decides to send the URL for blogthing 666 to his buddy, and goes to the URL box of the browser, prepared to copy it and send it to his buddy. Low and behold, the URL box in the browser doesn''t say www.mydomain.com/blogthing/display/666...is just says www.mydomain.com/blogthing/display. This is because the routing for www.mydomain.com/blogthing/display/666 takes the slug off the end and passes the slug as a parameter to the "blogthing controller''s display action", which then shows the blogthing entry in question. So the pointy haired boss wants this case to result in "www.mydomain.com/blogthing/display/666" in the browser''s URL box. The other reason for this is that if one wants to bookmark a particular blogthing, it needs to have the whole thing in the URL box of the browser. Maybe not so pointy haired after all. Is there any way to do this without hacking the Rails internals? If not, dare I say...how/where would I do this hacking? thanks! jp -- 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 -~----------~----~----~----~------~----~------~--~---
post your routes please because I have a hunch. (all routes not just the ones you think are taking effect) and an example hash that you are passing to link_to -- 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 -~----------~----~----~----~------~----~------~--~---
ps what do you mean by slug -- 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 -~----------~----~----~----~------~----~------~--~---
> This is because the routing for www.mydomain.com/blogthing/display/666 > takes the slug off the end and passes the slug as a parameter to the > "blogthing controller''s display action", which then shows the blogthing > entry in question./blogthing/display/666 should be accessing the display action, passing 666 as the slug unless you''re doing something weird. In which case, I''d stop doing that weird thing. -- Rick Olson http://lighthouseapp.com http://weblog.techno-weenie.net http://mephistoblog.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 -~----------~----~----~----~------~----~------~--~---
Rick Olson wrote:> /blogthing/display/666 should be accessing the display action, passing > 666 as the slug unless you''re doing something weird. In which case, > I''d stop doing that weird thing. > > -- > Rick OlsonRick, It is indeed doing as you say, but the URL box in the browser only shows http://www.mydomain.com/blogthing/display It doesn''t have the 666 on the end. That means I can''t book mark this blog entry or copy and paste the url to send it to someone. thanks, jp -- 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 -~----------~----~----~----~------~----~------~--~---
Keynan Pratt wrote:> post your routes please because I have a hunch. > (all routes not just the ones you think are taking effect) > and an example hash that you are passing to link_toKeynan, I can''t do that for various reasons. What is your hunch? thanks, jp P.S. A "slug" is the record-specific thing on the end of a url that says which one of these things you''re after. It might must be the id of the item, or it might be some sort of a mashup to make it look better or to make it opaque. In the end, the slug is something that can be turned into an ID and used to find a specific entry in the db. -- 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 -~----------~----~----~----~------~----~------~--~---
Keynan Pratt wrote:> post your routes please because I have a hunch. > (all routes not just the ones you think are taking effect) > and an example hash that you are passing to link_tofor grins, let''s say that the default route: # Install the default route as the lowest priority. map.connect '':controller/:action/:id'' were being used to map this thing. Shouldn''t there be a way to have the slug show up in the URL box? In this forum for instance, navigating to this topic gives a URL of: http://www.ruby-forum.com/topic/110551#new That 110551 is the slug. In my app as currently written, that would not be there. Am I doing something wrong? In a "normal" rails app where the default route is routing: http://www.mydomain.com/a/b/1 would that show up in the URL box after routing as: http://www.mydomain.com/a/b/1 ???? thanks, jp -- 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 -~----------~----~----~----~------~----~------~--~---
On 6/4/07, Jeff Pritchard <rails-mailing-list-ARtvInVfO7ksV2N9l4h3zg@public.gmane.org> wrote:> > Keynan Pratt wrote: > > post your routes please because I have a hunch. > > (all routes not just the ones you think are taking effect) > > and an example hash that you are passing to link_to > > for grins, let''s say that the default route: > # Install the default route as the lowest priority. > map.connect '':controller/:action/:id'' > > were being used to map this thing. Shouldn''t there be a way to have the > slug show up in the URL box? > > In this forum for instance, navigating to this topic gives a URL of: > http://www.ruby-forum.com/topic/110551#new > > That 110551 is the slug. In my app as currently written, that would not > be there. Am I doing something wrong? In a "normal" rails app where > the default route is routing: > http://www.mydomain.com/a/b/1 > > would that show up in the URL box after routing as: > http://www.mydomain.com/a/b/1 > ????You''re removing it somewhere, so stop removing it. Rails doesn''t hide parameters or anything. Pretty much every rails site in existence uses some form of slug (usually an ID, but the implementation in the code is identical). -- Rick Olson http://lighthouseapp.com http://weblog.techno-weenie.net http://mephistoblog.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 -~----------~----~----~----~------~----~------~--~---
Jeff, as Rick pointed out, the 666 should show by default as that is how Rails handles it from the start. Lets take a basic scaffold example, the domain.com/foo would be an index/list and domain.com/foo/1 would be a show page. Are you doing something that makes the 666 into something else? John Hornbeck On 6/4/07, Jeff Pritchard <rails-mailing-list-ARtvInVfO7ksV2N9l4h3zg@public.gmane.org> wrote:> > > Keynan Pratt wrote: > > post your routes please because I have a hunch. > > (all routes not just the ones you think are taking effect) > > and an example hash that you are passing to link_to > > for grins, let''s say that the default route: > # Install the default route as the lowest priority. > map.connect '':controller/:action/:id'' > > were being used to map this thing. Shouldn''t there be a way to have the > slug show up in the URL box? > > In this forum for instance, navigating to this topic gives a URL of: > http://www.ruby-forum.com/topic/110551#new > > That 110551 is the slug. In my app as currently written, that would not > be there. Am I doing something wrong? In a "normal" rails app where > the default route is routing: > http://www.mydomain.com/a/b/1 > > would that show up in the URL box after routing as: > http://www.mydomain.com/a/b/1 > ???? > > thanks, > jp > > -- > Posted via http://www.ruby-forum.com/. > > > >-- <JFH> "Work hard to find something that fascinates you." - Richard Feynman --~--~---------~--~----~------------~-------~--~----~ 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 -~----------~----~----~----~------~----~------~--~---
Rick Olson wrote the following on 04.06.2007 18:43 :> On 6/4/07, Jeff Pritchard <rails-mailing-list-ARtvInVfO7ksV2N9l4h3zg@public.gmane.org> wrote: > >> Keynan Pratt wrote: >> >>> post your routes please because I have a hunch. >>> (all routes not just the ones you think are taking effect) >>> and an example hash that you are passing to link_to >>> >> for grins, let''s say that the default route: >> # Install the default route as the lowest priority. >> map.connect '':controller/:action/:id'' >> >> were being used to map this thing. Shouldn''t there be a way to have the >> slug show up in the URL box? >> >> In this forum for instance, navigating to this topic gives a URL of: >> http://www.ruby-forum.com/topic/110551#new >> >> That 110551 is the slug. In my app as currently written, that would not >> be there. Am I doing something wrong? In a "normal" rails app where >> the default route is routing: >> http://www.mydomain.com/a/b/1 >> >> would that show up in the URL box after routing as: >> http://www.mydomain.com/a/b/1 >> ???? >> > > You''re removing it somewhere, so stop removing it. Rails doesn''t hide > parameters or anything. Pretty much every rails site in existence > uses some form of slug (usually an ID, but the implementation in the > code is identical). > >Just a ''hunch'' of mine: do you use button_to or any other way of generating a form in the page to generate a button leading to this URL? Then it is probably the source of your problem, the "slug" as you call it is probably passed as a CGI parameter in the POST content, not in the URL. If that''s the case, the simplest solution would be to use link_to. If your routes aren''t ok you''ll have a "?slug=<slugvalue>" in the URL instead of the cleaner pretty URLs, if that''s the case, as said previously, show us the routes. Without them we can only throw wild guesses around. If you need the link to look like a button, just use CSS. Using a form to generate a link to a display page is bad practice: you are on the way to get nested forms (which are inherently broken). Only use forms to modify data. Lionel. --~--~---------~--~----~------------~-------~--~----~ 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 -~----------~----~----~----~------~----~------~--~---
What you''re saying implies that this is a redirect and not a render of that action. Please confirm what you wrote: 1. You request GET /blogthing/display/666 2. You arrive at POST /blogthing/display with params[:slug] = ''666'' Rails does no such magic unless you are in fact doing a weird thing. --Andrew Vit On Jun 4, 7:53 am, Jeff Pritchard <rails-mailing-l...-ARtvInVfO7ksV2N9l4h3zg@public.gmane.org> wrote:> Rick Olson wrote: > > /blogthing/display/666 should be accessing the display action, passing > > 666 as the slug unless you''re doing something weird. In which case, > > I''d stop doing that weird thing. > > > -- > > Rick Olson > > Rick, > It is indeed doing as you say, but the URL box in the browser only showshttp://www.mydomain.com/blogthing/display > > It doesn''t have the 666 on the end. That means I can''t book mark this > blog entry or copy and paste the url to send it to someone.--~--~---------~--~----~------------~-------~--~----~ 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 -~----------~----~----~----~------~----~------~--~---
werdnativ wrote:> What you''re saying implies that this is a redirect and not a render of > that action. Please confirm what you wrote: > > 1. You request GET /blogthing/display/666 > > 2. You arrive at POST /blogthing/display with params[:slug] = ''666'' > > Rails does no such magic unless you are in fact doing a weird thing. > > --Andrew Vit > > > On Jun 4, 7:53 am, Jeff Pritchard <rails-mailing-l...-ARtvInVfO7ksV2N9l4h3zg@public.gmane.org>Thanks everybody. I''ll study it tonight and see what weird thing I''m doing. I don''t remember doing a weird thing, but then one man''s weird thing... jp -- 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 -~----------~----~----~----~------~----~------~--~---
Jeff Pritchard wrote:> Thanks everybody. I''ll study it tonight and see what weird thing I''m > doing. I don''t remember doing a weird thing, but then one man''s weird > thing... > > jpOK, the "weird thing" I was doing (no, not that, I mean in the code) is that I was doing a redirect to a different action. In hindsight, I should have expected that to screw up the stuff in the URL box. This is my second significant Rails effort. I''ve traced this error back to something my mentor during the first Rails project said but never explained. He (inadvertently I''m sure) put me in the habit of using redirects all over the place for no good reason. Just one more step in that long lonely walk from newbie to rock star. Thanks for making it clear to me that i was doing something weird. jp (...Mommy, he''s doing it again! ....) -- 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 -~----------~----~----~----~------~----~------~--~---
I''d presume that your not passing the slug as an id, and your passing it as a :slug => object.slug or whatever. Just change that to :id => object.slug(or whatever method it is on the object) this should automatically populate your URL in the :id space, as in :controller/:action/:id and then use params[:id] in your controller.... OR You could create a named route something like map.restful_name ''blogthing/display/:slug'', :controller => controller_name, :action => action_name Your form should then use, :slug(in place of :id) so :slug => object.slug Then you can use params[:slug] in your controller Does this make sense? Basically in both examples the same thing is happening, the :id/:slug is put into the URL by the form, and then the :id/:slug is pulled out of the URL by the controller, so if you just go straight to the URL the controller still finds the id/slug. Cam On Jun 5, 1:05 pm, Jeff Pritchard <rails-mailing-l...-ARtvInVfO7ksV2N9l4h3zg@public.gmane.org> wrote:> Jeff Pritchard wrote: > > Thanks everybody. I''ll study it tonight and see what weird thing I''m > > doing. I don''t remember doing a weird thing, but then one man''s weird > > thing... > > > jp > > OK, the "weird thing" I was doing (no, not that, I mean in the code) is > that I was doing a redirect to a different action. In hindsight, I > should have expected that to screw up the stuff in the URL box. > > This is my second significant Rails effort. I''ve traced this error back > to something my mentor during the first Rails project said but never > explained. He (inadvertently I''m sure) put me in the habit of using > redirects all over the place for no good reason. > > Just one more step in that long lonely walk from newbie to rock star. > > Thanks for making it clear to me that i was doing something weird. > > jp > > (...Mommy, he''s doing it again! ....) > > -- > 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-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
Also check out the magic routing plugin, it might be suitable for your URLs with meaningful slugs: http://agilewebdevelopment.com/plugins/magic_routing On Jun 4, 10:51 pm, cammo <mvpaustra...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote:> I''d presume that your not passing the slug as an id, and your passing > it as a :slug => object.slug or whatever. > Just change that to :id => object.slug(or whatever method it is on the > object) this should automatically populate your URL in the :id space, > as in :controller/:action/:id and then use params[:id] in your > controller.... > > OR > > You could create a named route something like > map.restful_name ''blogthing/display/:slug'', :controller => > controller_name, :action => action_name > Your form should then use, :slug(in place of :id) so :slug => > object.slug > Then you can use params[:slug] in your controller > > Does this make sense? > Basically in both examples the same thing is happening, the :id/:slug > is put into the URL by the form, and then the :id/:slug is pulled out > of the URL by the controller, so if you just go straight to the URL > the controller still finds the id/slug. > > Cam > > On Jun 5, 1:05 pm, Jeff Pritchard <rails-mailing-l...-ARtvInVfO7ksV2N9l4h3zg@public.gmane.org> > wrote: > > > Jeff Pritchard wrote: > > > Thanks everybody. I''ll study it tonight and see what weird thing I''m > > > doing. I don''t remember doing a weird thing, but then one man''s weird > > > thing... > > > > jp > > > OK, the "weird thing" I was doing (no, not that, I mean in the code) is > > that I was doing a redirect to a different action. In hindsight, I > > should have expected that to screw up the stuff in the URL box. > > > This is my second significant Rails effort. I''ve traced this error back > > to something my mentor during the first Rails project said but never > > explained. He (inadvertently I''m sure) put me in the habit of using > > redirects all over the place for no good reason. > > > Just one more step in that long lonely walk from newbie to rock star. > > > Thanks for making it clear to me that i was doing something weird. > > > jp > > > (...Mommy, he''s doing it again! ....) > > > -- > > 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-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---