【发布时间】:2015-04-08 17:27:12
【问题描述】:
我正在使用 Ruby on Rails 4.2,我想在 resource 的块中使用 namespace 或 scope :module / scope :path 来路由“嵌套”路径。
也就是说,我有如下路线:
resources :users, :only => [:show]
匹配
user_path GET /users/:id(.:format) users#show
我想匹配以下路径
users_sessions_path POST /users/sessions users/sessions#create
user_session_path GET /users/:id/session users/sessions#show
delete_user_session_path GET /users/:id/session/delete users/sessions#delete
user_session_path DELETE /users/:id/session users/sessions#destroy
我阅读了official documentation 并试图陈述类似的内容
resources :users, :only => [:show] do
scope :module => :users do
scope :module => :sessions do
# scope :path => :sessions do
# namespace :sessions do
...
end
end
end
但没有任何尝试成功。我应该如何陈述路线?
更新@dgilperez 回答后
我尝试了以下代码
resources :users, :only => [:show] do
scope :module => :users do
resource :session, :only => [:show, :new, :create, :destroy] do
get :delete, :on => :collection, :to => 'sessions#delete'
end
end
end
匹配
delete_user_session_path GET /users/:user_id/session/delete(.:format) users/sessions#delete
new_user_session_path GET /users/:user_id/session/new(.:format) users/sessions#new
user_session_path POST /users/:user_id/session(.:format) users/sessions#create
user_session_path GET /users/:user_id/session(.:format) users/sessions#show
DELETE /users/:user_id/session(.:format) users/sessions#destroy
但我仍然需要映射new 和create 操作,而无需传递:user_id 参数。也就是说,我想映射类似的东西
new_user_session_path GET /users/session/new(.:format) users/sessions#new
user_session_path POST /users/session(.:format) users/sessions#create
【问题讨论】:
标签: ruby-on-rails ruby ruby-on-rails-4 routing routes