[英]Rails route for method on nested shallow resource
由於投入很大,我已經清理了深層路線,並用淺層路線替換了它們。 我試圖使自定義方法工作,並缺少連接點上的東西。 我的routes.rb有以下幾行:
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
這樣,您將以params[:id]
而不是params[:event_id]
形式接收事件ID,以獲取complete
操作路由。
使用@event = Event.find(params[:id])
resources :members, shallow: true do
resources :events, shallow: true do
member do
get 'complete' => 'events#complete'
end
resources :items
end
end
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.