Hi, I''ve built the Admin section of my project first, and would like to move it to its own Admin namespace. I have four resources: Form, Element, Admin and User. Old URL would be: localhost:3000/forms New URL would be: localhost:3000/admin/forms How do I migrate from one namespace to another? After moving I want to create a second FormsController in the default namespace. I would then script/generate controller and script/generate view and modify as needed. Looking forward to hear your thoughts about this. CmdJohnson --~--~---------~--~----~------------~-------~--~----~ 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 Sep 20, 8:02 pm, "Commander Johnson" <commanderjohn...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote:> Hi, > I''ve built the Admin section of my project first, and would like to move it > to its own Admin namespace. > > I have four resources: Form, Element, Admin and User. > > Old URL would be: > > localhost:3000/forms > > New URL would be: > > localhost:3000/admin/forms > > How do I migrate from one namespace to another? > > After moving I want to create a second FormsController in the default > namespace. > I would then script/generate controller and script/generate view and modify > as needed. > > Looking forward to hear your thoughts about this. > > CmdJohnsonCreate a folder named "admin" in the following directories: - app/controllers - app/helpers - app/views Move the controllers, helpers and views which are to be namespaced to the corresponding admin subdirectory. You will need to edit the controllers that are namespaced. For example: Before: class FormsController < ApplicationController After: class Admin::FormsController < ApplicationController And do the same with your namespaced helpers. Lastly, modify your routes.rb to reflect the namespaced resources: map.namespace :admin do |admin| admin.resources :forms admin.resources :elements ... end HTH --~--~---------~--~----~------------~-------~--~----~ 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 -~----------~----~----~----~------~----~------~--~---
I think I got it all wrong. You want a fast way of refactoring from one namespace to another? --~--~---------~--~----~------------~-------~--~----~ 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 -~----------~----~----~----~------~----~------~--~---
Your first post looks like it''s exactly what I need. Moving from Default namespace to Admin namespace is what I wanted. But if there is a faster way, please don''t hesitate to share. On Sat, Sep 20, 2008 at 2:34 PM, Erol Fornoles <erol.fornoles-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>wrote:> > I think I got it all wrong. You want a fast way of refactoring from > one namespace to another? > > >--~--~---------~--~----~------------~-------~--~----~ 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 -~----------~----~----~----~------~----~------~--~---
Uh oh. 500 Internal Server Error Because I already have a Controller named AdminController, I used the namespace Backend. I organized the files like you said in your first post. Every Controller and every Helper now looks like this: class Backend::AdminController < ApplicationController Any ideas? On Sat, Sep 20, 2008 at 2:23 PM, Erol Fornoles <erol.fornoles-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote: > > On Sep 20, 8:02 pm, "Commander Johnson" <commanderjohn...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> > wrote: > > Hi, > > I''ve built the Admin section of my project first, and would like to move it > > to its own Admin namespace. > > > > I have four resources: Form, Element, Admin and User. > > > > Old URL would be: > > > > localhost:3000/forms > > > > New URL would be: > > > > localhost:3000/admin/forms > > > > How do I migrate from one namespace to another? > > > > After moving I want to create a second FormsController in the default > > namespace. > > I would then script/generate controller and script/generate view and modify > > as needed. > > > > Looking forward to hear your thoughts about this. > > > > CmdJohnson > > Create a folder named "admin" in the following directories: > > - app/controllers > - app/helpers > - app/views > > Move the controllers, helpers and views which are to be namespaced to > the corresponding admin subdirectory. > > You will need to edit the controllers that are namespaced. For > example: > > Before: class FormsController < ApplicationController > After: class Admin::FormsController < ApplicationController > > And do the same with your namespaced helpers. > > Lastly, modify your routes.rb to reflect the namespaced resources: > > map.namespace :admin do |admin| > admin.resources :forms > admin.resources :elements > ... > end > > HTH > >--~--~---------~--~----~------------~-------~--~----~ 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 experimented with this line in routes.rb: map.root :controller => :forms instead of map.root :controller => "forms" That caused the 500 error. Now that last statement is valid, but doesn''t work. How do I make the root path ''/'' point to Backend::FormsController? When I log in as admin, I get the error: undefined method `form_path'' for #<ActionView::Base:0x76ec1a> How do I make the *_path method understand what namespace we''re in? CmdJohnson On Sat, Sep 20, 2008 at 3:45 PM, Commander Johnson < commanderjohnson-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote:> > Uh oh. > > 500 Internal Server Error > Because I already have a Controller named AdminController, I used the namespace Backend. > I organized the files like you said in your first post. Every Controller and every Helper now looks like this: > class Backend::AdminController < ApplicationController > Any ideas? > > On Sat, Sep 20, 2008 at 2:23 PM, Erol Fornoles <erol.fornoles-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org > wrote: > > > > On Sep 20, 8:02 pm, "Commander Johnson" <commanderjohn...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> > > wrote: > > > Hi, > > > I''ve built the Admin section of my project first, and would like to move it > > > to its own Admin namespace. > > > > > > I have four resources: Form, Element, Admin and User. > > > > > > Old URL would be: > > > > > > localhost:3000/forms > > > > > > New URL would be: > > > > > > localhost:3000/admin/forms > > > > > > How do I migrate from one namespace to another? > > > > > > After moving I want to create a second FormsController in the default > > > namespace. > > > I would then script/generate controller and script/generate view and modify > > > as needed. > > > > > > Looking forward to hear your thoughts about this. > > > > > > CmdJohnson > > > > Create a folder named "admin" in the following directories: > > > > - app/controllers > > - app/helpers > > - app/views > > > > Move the controllers, helpers and views which are to be namespaced to > > the corresponding admin subdirectory. > > > > You will need to edit the controllers that are namespaced. For > > example: > > > > Before: class FormsController < ApplicationController > > After: class Admin::FormsController < ApplicationController > > > > And do the same with your namespaced helpers. > > > > Lastly, modify your routes.rb to reflect the namespaced resources: > > > > map.namespace :admin do |admin| > > admin.resources :forms > > admin.resources :elements > > ... > > end > > > > HTH > > > >--~--~---------~--~----~------------~-------~--~----~ 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 Sep 20, 9:57 pm, "Commander Johnson" <commanderjohn...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote:> I experimented with this line in routes.rb: > map.root :controller => :forms > > instead of > > map.root :controller => "forms" > > That caused the 500 error. > Now that last statement is valid, but doesn''t work. How do I make the root > path ''/'' point to Backend::FormsController? > > When I log in as admin, I get the error: > > undefined method `form_path'' for #<ActionView::Base:0x76ec1a> > > How do I make the *_path method understand what namespace we''re in? > > CmdJohnsonYou''ll need to point to the path of the controller. So for your Backend::FormsController, the root route should be set as: map.root :controller => "backend/forms" Since Backend::FormsController resides on backend/forms.rb Also, the path and url helpers for your namespaced controllers are now named backend_{controller}_path. You can confirm this - and check out all the other routes, as well - by running: rake routes --~--~---------~--~----~------------~-------~--~----~ 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 -~----------~----~----~----~------~----~------~--~---
In one of my views I used to have the line: <%= link_to ''Show'', form %> Which looked neat. According to ''rake routes'', I should now be able to use backend_form: backend_form GET /backend/forms/:id {:controller=>"backend/forms", :action=>"show"} But that gives me: undefined local variable or method `backend_form'' for #<ActionView::Base:0x19fae86> So now we have this: <%= link_to ''Show'', :controller=>"backend/forms", :action=>"show" %> Which works but is less neat. My app/views directory looks like this: backend admin elements forms layouts users My controllers are now layout-less. Should the layouts dir be one higher? On Sat, Sep 20, 2008 at 5:13 PM, Erol Fornoles <erol.fornoles-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>wrote:> > On Sep 20, 9:57 pm, "Commander Johnson" <commanderjohn...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> > wrote: > > I experimented with this line in routes.rb: > > map.root :controller => :forms > > > > instead of > > > > map.root :controller => "forms" > > > > That caused the 500 error. > > Now that last statement is valid, but doesn''t work. How do I make the > root > > path ''/'' point to Backend::FormsController? > > > > When I log in as admin, I get the error: > > > > undefined method `form_path'' for #<ActionView::Base:0x76ec1a> > > > > How do I make the *_path method understand what namespace we''re in? > > > > CmdJohnson > > You''ll need to point to the path of the controller. So for your > Backend::FormsController, the root route should be set as: > > map.root :controller => "backend/forms" > > Since Backend::FormsController resides on backend/forms.rb > > Also, the path and url helpers for your namespaced controllers are now > named backend_{controller}_path. You can confirm this - and check out > all the other routes, as well - by running: > > rake routes > > >--~--~---------~--~----~------------~-------~--~----~ 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 Sep 21, 5:59 am, "Commander Johnson" <commanderjohn...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote:> In one of my views I used to have the line: > <%= link_to ''Show'', form %> > > Which looked neat. According to ''rake routes'', I should now be able to use > backend_form: > > backend_form GET /backend/forms/:id > {:controller=>"backend/forms", :action=>"show"} > > But that gives me: > > undefined local variable or method `backend_form'' for > #<ActionView::Base:0x19fae86> > > So now we have this: > > <%= link_to ''Show'', :controller=>"backend/forms", :action=>"show" %> > > Which works but is less neat. > > My app/views directory looks like this: > > backend > admin > elements > forms > layouts > users > > My controllers are now layout-less. Should the layouts dir be one higher?You''ll need to append _url or _path for the url helpers to work. ;) Layouts are namespace agnostic. Specifying layout "backend" in your Backend::ElementsController, for example, would load "app/views/ layouts/backend.erb" as that controller''s layout. --~--~---------~--~----~------------~-------~--~----~ 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 -~----------~----~----~----~------~----~------~--~---
Where do I place my layout so I don''t have to specify one explicitly? I got this line of code: <% form_for([:backend, @form]) do |f| %> From here: http://api.rubyonrails.org/classes/ActionView/Helpers/FormHelper.html#M001740 But still get the error undefined method `form_path'' for #<ActionView::Base:0x1f25d83> On Sun, Sep 21, 2008 at 1:23 AM, Erol Fornoles <erol.fornoles-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote: > > You''ll need to append _url or _path for the url helpers to work. ;) > > Layouts are namespace agnostic. Specifying layout "backend" in your > Backend::ElementsController, for example, would load "app/views/ > layouts/backend.erb" as that controller''s layout.--~--~---------~--~----~------------~-------~--~----~ 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 Sep 21, 8:18 am, "Commander Johnson" <commanderjohn...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote:> Where do I place my layout so I don''t have to specify one explicitly? > I got this line of code: > > <% form_for([:backend, @form]) do |f| %> > > From here: > > http://api.rubyonrails.org/classes/ActionView/Helpers/FormHelper.html... > > But still get the error > > undefined method `form_path'' for #<ActionView::Base:0x1f25d83>If you want all your controllers to use the same layout, you could just define it at application.rb, like: class ApplicationController layout "mylayout" ... end Try this form_for construct: <% form_for @form, :url => {:action => "update"} do |f| %> Or for new records: <% form_for @form, :url => {:action => "create"} do |f| %> HTH --~--~---------~--~----~------------~-------~--~----~ 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 -~----------~----~----~----~------~----~------~--~---