Ruby on rails 轨道:子路由。没有路线匹配

Ruby on rails 轨道:子路由。没有路线匹配,ruby-on-rails,routing,Ruby On Rails,Routing,例如,我有自定义CRUD路由-用于配置文件 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 '/pr

例如,我有自定义CRUD路由-用于配置文件

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'
没问题。但我对配置文件技能做相同的路由,它是在配置文件关系下。这些技能的路线如下所示

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”路由中,if可以正常工作

在您的路线中使用此

resources :profiles do
  resources :profile_skills
end
这将为您提供这样的路线

profiles/:profile\u id/profile\u skill
指向
索引
profile\u skill的操作
profiles/:profile\u id/profile\u skill/new
指向
new
profile\u skill的操作
profiles/:profile\u id/profile\u skill/:profile\u skill\u id
指向
show
profile\u skill的动作
profiles/:profile\u id/profile\u skill/:profile\u skill\u id/edit
指向
edit
profile\u skill的操作

等等


有关更多帮助,请访问

我知道这是一个解决方案,但我尝试不使用“资源”(只是为了充分了解路由中发生的情况)。我只是从普通表单文件中只带出“表单”行,并为每个表单设置自定义url。很有趣的是表单是如何理解的,这是一个创建或更新页面。我原以为这是“新建”或“编辑”路由的结尾,但现在我认为这是不同的逻辑。无论如何,谢谢你!