如何在Rails 5中编写路由,以便当用户访问
时http:www.mysite.com/volunteer_events/add_shift
它会触发自愿者事件控制器中的add_shift方法
我花了几个小时盯着路由页面在这里…https://guides.rubyonrails.org/v5.0.7/routing.html…它变成了一堵巨大的文字墙。
这是我目前拥有的…
get '/volunteer_events/add_shift', to: 'volunteer_events#add_shift'
但是我得到一个错误
Couldn't find VolunteerEvent with 'id'=add_shift
我知道这很简单…我只是很累,我不记得了。
您的route.rb
文件的其余部分看起来如何?
从上到下解释路由,定义越高的路由优先级越高。我的假设是,你在路由
中有这样的东西resources :volunteer_events
get '/volunteer_events/add_shift', to: 'volunteer_events#add_shift'
可以翻译成这样
get '/volunteer_events/:id', to: 'volunteer_events#show'
get '/volunteer_events/add_shift', to: 'volunteer_events#add_shift'
现在您的第一条路由始终优先于第二条路由,并且add_shift
将始终被解释为show
路由的id(注意显示路由中的:id
是一个参数)。只要翻转这两个,这样/volunteer_events/add_shift
就会在你的显示路径之前匹配,你应该很好。