[英]Rails - couldn't find IT with “ID”=
我正在嘗試為小型銀行構建一個軟件,其中涉及交易,(銀行的)集合和信貸工具。 作為參考,設施屬於銀行池,屬於交易。
以下是我嘗試創建“設施”時的問題:
Couldn't find Pool with 'id'=
我有3個模型:交易,集合,設施
class Deal < ActiveRecord::Base
has_many :banks
has_many :pools, :dependent => :destroy
end
class Pool < ActiveRecord::Base
belongs_to :deal
end
class Facility < ActiveRecord::Base
belongs_to :pool
end
以下是我的設施控制器:
class FacilitysController < ApplicationController
before_action :authenticate_user!
before_action :set_pool
before_action :set_facility, only: [:show, :edit, :update, :destroy]
def new
@pool = Pool.find(params[:id])
@facility = Facility.new
end
def edit
@facility = Facility.find(params[:id])
end
def create
@facility = Facility.new(facilitys_params)
if @facility.save
redirect_to root_path, notice: "Facility successfully created!"
else
render "New"
end
end
def show
@facility = Facility.find(params[:id])
@facility.pool_id = @pool.id
end
def update
@facility.update(facilitys_params)
if @facility.update(facilitys_params)
redirect_to deal_facility_url(@pool, @facility), notice: "Facility successfully updated!"
else
render :edit
end
end
def destroy
@facility.destroy
end
private
def set_pool
@pool = Pool.find(params[:id])
end
def set_facility
@facility = Facility.find(params[:id])
end
def facilitys_params
params.require(:facility).permit(:name)
end
end
我的路線是
resources :deals do
resources :pools, except: [:index] do
resources :facilitys, except: [:index]
end
end
看起來您正在嘗試使用嵌套資源,但是您沒有提供足夠的信息。
如果您的路由沒有這樣配置:
resources :pools do
resources :facilities
end
...然后將相關路線添加到您的問題中。
如果您的路由是這樣配置的,那么很好,但是現在您的set_pool
不正確。 看一下rake routes
的輸出,您應該在Facility
路徑中看到以下內容:
pool_facility_index GET /pools/:pool_id/facility(.:format) facility#index
POST /pools/:pool_id/facility(.:format) facility#create
new_pool_facility GET /pools/:pool_id/facility/new(.:format) facility#new
edit_pool_facility GET /pools/:pool_id/facility/:id/edit(.:format) facility#edit
pool_facility GET /pools/:pool_id/facility/:id(.:format) facility#show
PATCH /pools/:pool_id/facility/:id(.:format) facility#update
PUT /pools/:pool_id/facility/:id(.:format) facility#update
DELETE /pools/:pool_id/facility/:id(.:format) facility#destroy
請注意,每條路徑中都提到了兩個參數:id
和:pool_id
。 現在看看您的set_pool
方法,並查看用於查找Pool
。 您還需要更改它以使用params[:pool_id]
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.