Até aí super tranquilo, como todo bom brasileiro não li a documentação inteira, vamos aos meus problemas. Primeiro queria gerar um CRUD(Create, Retrieve, Update e Delete) dentro da pasta, então para criar um usamos um scaffold, então criei digitei:
script/generate scaffold Admin/Menu name:string description:string
Milagrosamente a pasta admin foi criada e as coisas separadas, algo bem parecidos como criado um package no java ou namespace no C#(linguagens que sou mais familiarizado).
Pensei comigo mesmo, claro essa foi simples até de mais, só que ai feliz da vida fui rodar o site e ERRO, ele afirmava que a variavel @menu estava nula, achei estranho mas coloquei um if lá para verificar se o menu era nil.
Quando cliquei em new menu, que ele chamaria a página new, ele me joga uma dessa:
uninitialized constant MenusController
e um stack meio inutil.
C:/Ruby/lib/ruby/gems/1.8/gems/activesupport-2.3.5/lib/active_support/dependencies.rb:443:in `load_missing_constant'
C:/Ruby/lib/ruby/gems/1.8/gems/activesupport-2.3.5/lib/active_support/dependencies.rb:80:in `const_missing'
C:/Ruby/lib/ruby/gems/1.8/gems/activesupport-2.3.5/lib/active_support/dependencies.rb:92:in `const_missing'
C:/Ruby/lib/ruby/gems/1.8/gems/activesupport-2.3.5/lib/active_support/inflector.rb:361:in `constantize'
C:/Ruby/lib/ruby/gems/1.8/gems/activesupport-2.3.5/lib/active_support/inflector.rb:360:in `each'
C:/Ruby/lib/ruby/gems/1.8/gems/activesupport-2.3.5/lib/active_support/inflector.rb:360:in `constantize'
C:/Ruby/lib/ruby/gems/1.8/gems/activesupport-2.3.5/lib/active_support/core_ext/string/inflections.rb:162:in `constantize'
C:/Ruby/lib/ruby/gems/1.8/gems/actionpack-2.3.5/lib/action_controller/routing/route_set.rb:443:in `recognize'
C:/Ruby/lib/ruby/gems/1.8/gems/actionpack-2.3.5/lib/action_controller/routing/route_set.rb:436:in `call'
Pensei com meus botões, deve ser problema na configuração de routes, já que ele não encontrou o controller, e pensei logo e scaffold não gera essa parte corretamente, então como fazer?
Depois de algumas tentativas e muitos erros, e documentação digerida(não lida obviamente), chego a conclusão que resolve o problema, o uso de:
map.namespace(:admin) do |admin|
admin.resources :menus
end
Onde eu digo que dentro da pasta admin, será encontrado todas as referencias dos menus, pronto, problema com routes resolvido.
Agora o pior dos problemas foi resolvido apenas substitua onde tem *menu_path por *admin_menu_path e no controller onde recebe o valor :menu para :admin_menu