簡體   English   中英

Rails-找不到帶有“ ID” =的IT

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

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