Ruby on rails 嵌套浅层资源上的Rails路由方法
由于大量的投入,我已经清理了我的深路线,并将其替换为浅路线。我试图让一个自定义的方法工作,但缺少连接点的东西。My routes.rb有以下几行:Ruby on rails 嵌套浅层资源上的Rails路由方法,ruby-on-rails,rails-routing,Ruby On Rails,Rails Routing,由于大量的投入,我已经清理了我的深路线,并将其替换为浅路线。我试图让一个自定义的方法工作,但缺少连接点的东西。My routes.rb有以下几行: resources :members, shallow: true do resources :events, shallow: true do get 'complete' => 'events#complete' resources :items end end 我的目标是能够对事件调用'events/:id/co
resources :members, shallow: true do
resources :events, shallow: true do
get 'complete' => 'events#complete'
resources :items
end
end
我的目标是能够对事件调用'events/:id/complete'来完成事件并对其进行后期处理。上述路线添加了以下路线:
event_event_complete GET /events/:event_id/complete(.:format) events#complete
member_events GET /members/:member_id/events(.:format) events#index
POST /members/:member_id/events(.:format) events#create
new_member_event GET /members/:member_id/events/new(.:format) events#new
edit_event GET /events/:id/edit(.:format) events#edit
event GET /events/:id(.:format) events#show
PATCH /events/:id(.:format) events#update
PUT /events/:id(.:format) events#update
DELETE /events/:id(.:format) events#destroy
当前控制器操作:
def complete
@event = Event.find(params[:event_id])
end
我认为应该是:
def complete
@event = Event.find(params[:id])
end
似乎我把它放错地方了,或者遗漏了一些东西,因为它以:event_id而不是:id的形式传递事件。一切都正常,但似乎这更混乱,所以我打赌我做错了一些愚蠢的事情
提前感谢您的帮助
标记如下更新您的路线:
resources :members, shallow: true do
resources :events, shallow: true do
member do
get 'complete' => 'events#complete'
end
resources :items
end
end
这样,您将在
参数[:id]
中接收事件id,而不是参数[:event\u id]
以完成操作路线。使用@event=event.find(params[:id])
这和我的答案有什么不同?我不知道你也发布了同样的答案。你比我的帖子快了2分钟,真是妙不可言。再次感谢您的时间和帮助,非常感谢!!!!很高兴再次提供帮助:)
resources :members, shallow: true do
resources :events, shallow: true do
member do
get 'complete' => 'events#complete'
end
resources :items
end
end