最近我碰到問題的問題在訪問命名空間的控制器我有education/educations_controller.rb
父控制器訪問子命名空間控制器
class Education::EducationssController < ApplicationController
def process_educations
if highschool
controller_to_redirect = 'highschool'
if bacholors
controller_to_redirect = 'bacholors'
else
controller_to_redirect = 'masters'
end
redirect_to :controller => controller_to_redirect, :action => 'process_educations'
end
end
和三個子控制器education/highschool_controller.rb
,education/bacholors_controller.rb
,education/masters_controller.rb
的所有指標的影響存在於educations_controller.rb
傳遞到這些控制器
class Education::HighschoolController < Education::EducationssController
def proceed_educations
do some process
end
end
class Education::BacholorsController < Education::EducationssController
def proceed_educations
do some process
end
end
class Education::MastersController < Education::EducationssController
def proceed_educations
do some process
end
end
而且各個視圖來之後但在這個過程中的U RL變得太長,所以我想把除去從URL的所有控制器然後處理這樣不論什麼用戶被引導到同一個URL,對於本我改變routes.rb
作爲
namespace :educations,:path => '' do
scope "/educations" do
get 'proceed_educations',to:'educations#proceed_educations'
post 'proceed_educations',to:'educations#proceed_educations'
end
resource :highschool ,:path => '' do
get 'proceed_educations',to:'highschool#proceed_educations'
post 'proceed_educations',to:'highschool#proceed_educations'
end
resource :bacholors ,:path => '' do
get 'proceed_educations',to:'bacholors#proceed_educations'
post 'proceed_educations',to:'bacholors#proceed_educations'
end
resource :masters ,:path => '' do
get 'proceed_educations',to:'masters#proceed_educations'
post 'proceed_educations',to:'masters#proceed_educations'
end
end
這產生相同的URL爲每個控制器但是當我嘗試訪問他們,如educations_controller.rb
他們總是重定向到相同的控制器HighschoolController
。
我不明白我在做什麼事情錯了,請幫我理解這個過程,或者如果有更好的方法做到這一點,那麼請建議。
'/ educations/highschool'的網址太長了?如果是的話,爲什麼不把它做成'/ highschool'?也許我不明白你的意圖,但問題是你正在爲多個路線定義相同的端點(它究竟是怎麼知道去哪裏的?) – engineersmnky
另外,它會去高中路線,因爲該網址是第一個比賽。 Rails獲取請求,然後滾動路徑文件直到找到第一個匹配的路由(它不會繼續查看是否可能更緊密)。在這種情況下,它找到高中路線作爲比賽。 – bkunzi01
那麼我如何隱藏控制器的名稱從URL和顯示所有控制器的動作從相同的網址 – Mike