Rails多态关联是指未定义的方法

时间:2013-11-12 22:03:40

标签: ruby-on-rails model-view-controller ruby-on-rails-4 polymorphism polymorphic-associations

我有一个带有类型列的用户模型(我相信这称为多态关联)。用户可以是以下两种类型之一:员工或雇主。雇主可以发布项目。所以项目属于雇主和雇主有很多项目。我的项目控制器中有以下代码:

def new
    @project = Project.new
end

def create
    project = current_user.project.build(project_params)
    project.save
    redirect_to project_path(project_params(:id))
end

def show
    @project = Project.find(params(:id))
end

private

def project_params
  params.require(:project).permit(:title, :category, :location, :budget, :description)
end

问题在于,当我尝试在浏览器中提交新表单时,我被告知:

undefined method `project' for #<Employer:0x007ffd85cf3250>

我已多次在铁轨中制作表格。我做的唯一不同的是多态关联,所以我的猜测是问题与此有关吗?有人有主意吗?谢谢。我也有一种感觉,如果有人对此有任何意见,我的show方法可能不正确。

1 个答案:

答案 0 :(得分:1)

使用projects,因为您使用的是has_manyproject方法只有在您说过雇主has_one项目时才可用。

请注意,projects将返回项目数组而不是项目对象。