Можно ли присвоить пространство имен целому приложению rails (т.е. добавить к пути URL) - PullRequest
1 голос
/ 15 февраля 2012

У меня есть приложение rails, у которого около 30 совпадений на маршрутах. Rb

match '/send-email' => 'index#send_email'
match '/forgot-password' => 'users#forgot_password', :as => :forgot_password
match '/forgot-password-confirmation' => 'users#forgot_password_confirmation'
match '/user/save-password' => 'users#save_password', :as => 'edit_users_password'
match '/user/home', :to => 'users#home'
match '/users/:id', :to => 'users#show', :as => "user_show"

Как лучше добавить добавленный маршрут?

like /user/home -> /app/user/home,
    /user/show/:id -> /app/user/show/:id

Есть ли способ просто применить это глобально? А потом поставить исключение для рута? и один маршрут для красивых URL-адресов, таких как domain.com/user-name?

Ответы [ 2 ]

2 голосов
/ 15 февраля 2012

Использовать пространство имен .

namespace :app do
  match '/send-email' => 'index#send_email'
  match '/forgot-password' => 'users#forgot_password', :as => :forgot_password
  match '/forgot-password-confirmation' => 'users#forgot_password_confirmation'
  match '/user/save-password' => 'users#save_password', :as => 'edit_users_password'
  match '/user/home', :to => 'users#home'
  match '/users/:id', :to => 'users#show', :as => "user_show"
end
0 голосов
/ 15 февраля 2012

Я думаю, что самый простой способ - использовать область действия в ваших маршрутах. Она будет работать без префикса имени, как если бы вы использовали пример пространства имен

scope "/app" do
 match '/send-email' => 'index#send_email'
  match '/forgot-password' => 'users#forgot_password', :as => :forgot_password
  match '/forgot-password-confirmation' => 'users#forgot_password_confirmation'
  match '/user/save-password' => 'users#save_password', :as => 'edit_users_password'
  match '/user/home', :to => 'users#home'
  match '/users/:id', :to => 'users#show', :as => "user_show"

end
...