2011-05-31 14 views
5

Estoy intentando anidar algunas rutas en el espacio de nombres, cuenta.Rutas rutas con nombres de nombres trabajan en desarrollo pero no en producción

Quiero gestión de usuario con la cuenta como /account/users/account/users/5/edit y

En routes.rb:

namespace :account do 
    resources :users do 
    member do 
     put 'generate_api_key' 
    end 

    collection do 
     post 'api_key' 
    end 
    end 
end 

Mis controladores no están de espacios de nombres o ponerlos en cualquier directorio diferente.

/app 
    /controllers 
    accounts_controller.rb 
    users_controller.rb 

En mi entorno de desarrollo esto está funcionando bien, pero en la producción me sale 404 respuestas a cualquiera de los /account/users... caminos (que, por cierto, están todavía genera correctamente: new_account_users_path, edit_account_user_path, etc) .

rake routes genera la misma salida en ambos entornos. Aquí es la parte relevante:

generate_api_key_account_user PUT /account/users/:id/generate_api_key(.:format)      {:action=>"generate_api_key", :controller=>"account/users"} 
     api_key_account_users POST /account/users/api_key(.:format)         {:action=>"api_key", :controller=>"account/users"} 
       account_users GET /account/users(.:format)           {:action=>"index", :controller=>"account/users"} 
           POST /account/users(.:format)           {:action=>"create", :controller=>"account/users"} 
       new_account_user GET /account/users/new(.:format)          {:action=>"new", :controller=>"account/users"} 
      edit_account_user GET /account/users/:id/edit(.:format)         {:action=>"edit", :controller=>"account/users"} 
        account_user GET /account/users/:id(.:format)          {:action=>"show", :controller=>"account/users"} 
           PUT /account/users/:id(.:format)          {:action=>"update", :controller=>"account/users"} 
           DELETE /account/users/:id(.:format)          {:action=>"destroy", :controller=>"account/users"} 

Teniendo en cuenta que las rutas parecen buscar el controlador Users en el subdirectorio /account, supongo que mi pregunta es ¿por qué este trabajo en el desarrollo?

producción es:

  • Rails 3.0.7
  • pasajeros
  • Apache

Desarrollo es:

  • Rails 3.0.7
  • Mongré l

Gracias por su opinión sobre este.

+0

Estás escribiendo "I Get 404 respuestas a cualquiera de los'/admin/'de los usuarios ... caminos". ¿Te refieres a '/ accounts/users'? – htanata

+1

Tiene toda la razón, error tipográfico allí. Edité mi publicación. Gracias. – doctororange

Respuesta

5

Si tiene espacios de nombres como este, Rails requiere que los controladores estén en sus rutas correctas, como app/controllers/account/users_controller.rb. Si no quieres hacer esto, a continuación, utilizar scope lugar:

scope :path => "account" do 
    resources :users 
end 
+2

El problema es que, en desarrollo, utilizará el controlador en la ruta principal en ausencia de un controlador con el nombre adecuado en la ruta correcta. Un poco confuso –

+0

Um ... es por eso que dije que podrías usar el espacio de nombres si quieres que estén en una ruta específica, o el alcance si no. –

Cuestiones relacionadas