您需要通过奇异名称格式打电话给你的模型。
您还需要确保你的协会反映无论是单数还是复数(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