您需要通過奇異名稱格式打電話給你的模型。
您還需要確保你的協會反映無論是單數還是複數(belongs_to
是單數):
class CategoryCoach < ActiveRecord::Base
belongs_to :category
end
這還要爲其他協會:
#app/models/coach.rb
class Coach < ActiveRecord::Base
has_many :category_coaches
end
ActiveRecord
您需要處理ActiveRecord關聯。具體來說,您已經以特有的方式關聯了您的模型。
我會使用一個has_and_belongs_to_many
協會:
#app/models/coach.rb
class Coach < ActiveRecord::Base
has_and_belongs_to_many :categories
end
#app/models/category.rb
class Category < ActiveRecord::Base
has_and_belongs_to_many :coaches
end
你會需要用下面的連接表:
#categories_coaches
category_id | coach_id
這會給你打電話@category.coaches
等的能力:
結構
我覺得有一個更深層次的結構性問題,以知足。
首先,爲什麼要將ProgrammesController嵌入到命名空間?命名空間與您的控制器結構無關 - 它只是提供了一種在應用程序中隔離功能的方法。
您應該構建您的應用程序是這樣的:
#config/routes.rb
resources :coaches do
resources :programmes #-> url.com/coaches/:coach_id/programmes/new
end
#app/models/coach.rb
class Coach < ActiveRecord::Base
has_many :programmes
end
#app/models/programme.rb
class Programme < ActiveRecord::Base
belongs_to :coach
end
#app/controllers/programmes_controller.rb
class ProgrammesController < ApplicationController
def new
@coach = Coach.find params[:coach_id]
@programme = @coach.programmes.new
end
def create
@coach = Coach.find params[:coach_id]
@programme = @coach.programmes.new programme_params
@programme.save
end
private
def programme_params
params.require(:programme).permit(:x, :y, :z)
end
end
的型號名稱和聯繫是錯誤的,你應該看看在http:/ /guides.rubyonrails.org/association_basics.html – Pavan
使用'CategoryCoaches'不是'CategoriesCoaches' –
而不是使用圖像善意地提及問題中的錯誤。它可以幫助其他有相同錯誤的用戶找到這個問題 – Gogo