假设我有一个用户表和一个广告系列表(带有user_id列),并且每个广告系列都有一个创建者(他是一个用户),还有一个成员列表,他们也是(用户)。所以我有
class UsersController < ApplicationController
has_many :campaigns
和
class CampaignsController < ApplicationController
belongs_to :user
has_many :users
accept_nested_attributes_for :users
但我收到错误:ActionController::RoutingError (undefined method
belongs_to'for CampaignsController:Class)`
答案 0 :(得分:5)
模型关系必须在模型文件中声明,而不是在控制器中声明。 它应该是:
class User < ActiveRecord::Base
has_many :campaigns
class Campaign< ActiveRecord::Base
belongs_to :user
has_many :users
accept_nested_attributes_for :users
答案 1 :(得分:1)
方法#has_many
和#belongs_to
是为ActiveRecord模型而不是ActionPack控制器定义的。
您需要创建模型(使用迁移创建表和列):用户和Camaign并在那里定义关系,在控制器中,您只需获取模型并在视图中显示它们,或使用来自用户的参数更新模型。