Rails:子路由。没有路由匹配

Rails:子路由。没有路由匹配

问题描述:

我有,例如自定义的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'路线中,如果工作正常。

在你的路由使用

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

我知道,这是解决办法,但我尽量不使用“资源”(只是在充分了解路由发生了什么)。我只是将常规表单文件中的“表单”行带出来,并为每个表单设置自定义网址。表单理解很有趣,这是创建或更新页面。我认为它看起来在'新'或'编辑'的路由结束,但现在我认为这是不同的逻辑。无论如何,谢谢! –