簡體   English   中英

嵌套淺層資源的方法的Rails路線

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM