ruby-on-rails 轨道:子布线,无路由匹配

tjrkku2a  于 2023-06-07  发布在  Ruby
关注(0)|答案(1)|浏览(123)

例如,我有自定义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'

它工作正常。但我做了同样的路由配置文件的技能,这是在关系的配置文件。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| %>

为什么他不明白,我在“新”的路线下,它在寻找“编辑”,当我在“新”?这个问题只有在我走支线的时候才会出现。例如,在“配置文件”路由中,如果工作正常。

xtupzzrd

xtupzzrd1#

在你的路线中使用这个

resources :profiles do
  resources :profile_skills
end

它会给你提供这样的路线
profiles/:profile_id/profile_skill指向index profile_skill的操作profiles/:profile_id/profile_skill/new指向new profile_skill的操作profiles/:profile_id/profile_skill/:profile_skill_id指向show profile_skill的操作profiles/:profile_id/profile_skill/:profile_skill_id/edit指向edit profile_skill的操作
等等。
有关更多帮助,请访问Rails Routing

相关问题