Ok, I''m quite near to grasp all the resources and related routing affair... There is, anyway, a problem that I''m not able to solve: I do not get the picture, here. I have Offers, and I have Categories... (offers are categorized) Offers could be listed and shown alone, so you have: /offers/23 or /offers and even /offers.rss The problem comes when I try to get the Offers related to some Category The REST way is /categories/32/offers but it won''t work... I can''''t (or I don''t know how) use offers_url ... or many other url helper that worked without nesting... Here it is my current (not working) routes.rb map.connect '''', :controller => ''offers'' map.resources :offers map.resources :offers, :new => { :new => :any, :preview => :post } map.resources :categories do |categories| categories.resources :offers end -- Claudio Cicali --~--~---------~--~----~------------~-------~--~----~ 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 -~----------~----~----~----~------~----~------~--~---
You need a name prefix if you''re specifying resources multiple times. A suggestion for your situation: map.connect '''', :controller => ''offers'' map.resources :offers, :new => { :new => :any, :preview => :post }, :name_prefix => ''all_'' map.resources :categories do |categories| categories.resources :offers end This gives you all_offers_path and categories_offers_path along with the URLs of "/offers" and "/categories/12/offers" and all related variations. Jason On 5/3/07, Ruby Rails <rails.ml-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote:> > Ok, I''m quite near to grasp all the resources and related routing > affair... > > There is, anyway, a problem that I''m not able to solve: I do not get the > picture, here. > > I have Offers, and I have Categories... (offers are categorized) > > Offers could be listed and shown alone, so you have: /offers/23 or /offers > and even /offers.rss > > The problem comes when I try to get the Offers related to some Category > > The REST way is /categories/32/offers but it won''t work... I can''''t (or I > don''t know > how) use offers_url ... or many other url helper that worked without > nesting... > > Here it is my current (not working) routes.rb > > map.connect '''', :controller => ''offers'' > > map.resources :offers > map.resources :offers, :new => { :new => :any, :preview => :post } > > map.resources :categories do |categories| > categories.resources :offers > end > > > > -- > Claudio Cicali > > > >--~--~---------~--~----~------------~-------~--~----~ 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 -~----------~----~----~----~------~----~------~--~---
Claudio, The problem is that the routes conflict. The way to get the routes untangled is to use :name_prefix => ''something_'' and possibly :path_prefix => ''/something/:some_id''. I wanted to experiment with this to see what all is necessary, because I''ve been facing this in my own application. The trick, once I got my routes untangled, was to make sure the views and the controller stays untangled too. If I were in your application, I''d probably create a: before_filter :find_category and then def find_category @category = nil @category = Category.find(params[:category_id]) if params[:category_id] end Then, when you call all the orders_url and order_url(@order), etc. in your controller and views, you''ll put a conditional there, to pass @category if @category (like @category ? order_url(@category, @order) : order_url(@order). Does that make sense? To summarize, you''ll want to create the nested resources with :name_prefix, and you''ll want to know what kind of url you''ll be calling. If you find a cleaner way to keep your routes untangled in your views and controllers, please let me know. I''m going to have this everywhere in an app I''m working on. David On May 3, 5:18 pm, "Ruby Rails" <rails...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote:> Ok, I''m quite near to grasp all the resources and related routing affair... > > There is, anyway, a problem that I''m not able to solve: I do not get the > picture, here. > > I have Offers, and I have Categories... (offers are categorized) > > Offers could be listed and shown alone, so you have: /offers/23 or /offers > and even /offers.rss > > The problem comes when I try to get the Offers related to some Category > > The REST way is /categories/32/offers but it won''t work... I can''''t (or I > don''t know > how) use offers_url ... or many other url helper that worked without > nesting... > > Here it is my current (not working) routes.rb > > map.connect '''', :controller => ''offers'' > > map.resources :offers > map.resources :offers, :new => { :new => :any, :preview => :post } > > map.resources :categories do |categories| > categories.resources :offers > end > > -- > Claudio Cicali--~--~---------~--~----~------------~-------~--~----~ 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 -~----------~----~----~----~------~----~------~--~---
@Jason: your solution worked flawlessy :) What I did missed, was that the "all_" would go prefixed to the helpers... silly me @David, thank you for your considerations! I''ve indeed resolved all my problems with the before_filter in my offers_controller, just before your mail arrived :) But I don''t understand why you''d need all those conditionals... Once I have the "all_" prefix (that *now* I understand), all my helpers worked as in: all_offers_url() -> /offers offers_url(@category) -> /categories/23/offers all_offer_url(@offer) -> /offers/44 formatted_all_offers_path(:rss) all_new_offer_url all_preview_new_offer_url() They are a bit verbose, but they make definitely sense to me. Am I missing something? On 04/05/07, David Richards <drichards-r0AmQGE5tMWBSXDBVWn4aQ@public.gmane.org> wrote:> > > Claudio, > > The problem is that the routes conflict. The way to get the routes > untangled is to use :name_prefix => ''something_'' and > possibly :path_prefix => ''/something/:some_id''. I wanted to > experiment with this to see what all is necessary, because I''ve been > facing this in my own application. > > The trick, once I got my routes untangled, was to make sure the views > and the controller stays untangled too. If I were in your > application, I''d probably create a: > > before_filter :find_category > > and then > > def find_category > @category = nil > @category = Category.find(params[:category_id]) if > params[:category_id] > end > > Then, when you call all the orders_url and order_url(@order), etc. in > your controller and views, you''ll put a conditional there, to pass > @category if @category (like @category ? order_url(@category, > @order) : order_url(@order). > > Does that make sense? > > To summarize, you''ll want to create the nested resources > with :name_prefix, and you''ll want to know what kind of url you''ll be > calling. > > If you find a cleaner way to keep your routes untangled in your views > and controllers, please let me know. I''m going to have this > everywhere in an app I''m working on. > > David > > > > On May 3, 5:18 pm, "Ruby Rails" <rails...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote: > > Ok, I''m quite near to grasp all the resources and related routing > affair... > > > > There is, anyway, a problem that I''m not able to solve: I do not get the > > picture, here. > > > > I have Offers, and I have Categories... (offers are categorized) > > > > Offers could be listed and shown alone, so you have: /offers/23 or > /offers > > and even /offers.rss > > > > The problem comes when I try to get the Offers related to some Category > > > > The REST way is /categories/32/offers but it won''t work... I can''''t (or > I > > don''t know > > how) use offers_url ... or many other url helper that worked without > > nesting... > > > > Here it is my current (not working) routes.rb > > > > map.connect '''', :controller => ''offers'' > > > > map.resources :offers > > map.resources :offers, :new => { :new => :any, :preview => :post } > > > > map.resources :categories do |categories| > > categories.resources :offers > > end > > > > -- > > Claudio Cicali > > > > >--~--~---------~--~----~------------~-------~--~----~ 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 -~----------~----~----~----~------~----~------~--~---
It''s elegant. I like it. This has been something that I''ve been wondering about for a while, but haven''t had time to implement. When I found the answer the other day, I was dying to try it out, but got called away. Thanks both of you. --~--~---------~--~----~------------~-------~--~----~ 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 -~----------~----~----~----~------~----~------~--~---