2017-09-01 285 views
0

我有,例如自定義的CRUD路線 - 用於型材Rails:子路由。沒有路由匹配

get '/profiles', to: 'profiles#index' 
    get '/profiles/new', to: 'profiles#new', :as => 'new_profile' 
    post '/profiles', to: 'profiles#create' 
    get '/profiles/edit/:id', to: 'profiles#edit', :as => 'profile' 
    patch '/profiles/edit/:id', to: 'profiles#update' 
    get '/profiles/get_profiles', to: 'profiles#get_profiles' 

它工作正常。但是我在配置文件技巧上做了相同的路由,這與配置文件有關係。 ProfileSkills的路線是這樣的

get '/profiles/:profile_id/profile_skills', to: 'profile_skills#index' 
    get '/profiles/:profile_id/profile_skills/new', to: 'profile_skills#new', :as => 'new_profile_skill' 
    post '/profiles/:profile_id/profile_skills', to: 'profile_skills#create' 
    get '/profiles/:profile_id/profile_skills//edit/:id', to: 'profile_skills#edit', :as => 'profile_skills' 
    patch '/profiles/:profile_id/profile_skills/edit/:id', to: 'profiles#update' 

當我創建新項目

http://localhost:3000/profiles/1/profile_skills/new 

路線下它拋出一個異常

No route matches {:action=>"edit", :controller=>"profile_skills", :profile_id=>"1"}, missing required keys: [:id] 

在形式爲線

<%= form_for @profile_skill do |form| %> 

他爲什麼不妳當我處於'新'之下時,明白我處於'新'路線並且正在尋找'編輯'? 這個問題只有當我在子路線上。例如,在'Porfile'路線中,如果工作正常。

回答

1

在你的路由使用

resources :profiles do 
    resources :profile_skills 
end 

這將提供你喜歡這個

profiles/:profile_id/profile_skill點的路線profile_skill的index行動 profiles/:profile_id/profile_skill/new點的profile_skill profiles/:profile_id/profile_skill/:profile_skill_idnew行動的show行動profile_skill profiles/:profile_id/profile_skill/:profile_skill_id/edit指向edit profile_skill的動作

等等。

如需更多幫助,請訪問Rails Routing

+0

我知道,這是解決辦法,但我儘量不使用「資源」(只是在充分了解路由發生了什麼)。我只是將常規表單文件中的「表單」行帶出來,併爲每個表單設置自定義網址。表單理解很有趣,這是創建或更新頁面。我認爲它看起來在'新'或'編輯'的路由結束,但現在我認爲這是不同的邏輯。無論如何,謝謝! –

相關問題