【问题标题】:Rails polymorphic assocation is saying undefined methodRails 多态关联说的是未定义的方法
【发布时间】:2013-11-12 22:03:40
【问题描述】:

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

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>

我已经多次在 Rails 中制作表格。我唯一不同的是多态关联,所以我的猜测是问题与此有关?有人有想法么?谢谢。我也有一种感觉,如果有人有任何 cmet,我的显示方法可能不正确。

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】:

    • 如果我这样做,它会告诉我:'参数数量错误(1 代表 0)'
    • 它突出显示了“def project_params”行,它会在调用构建方法时转到该行。
    • 我想知道您是否可以致电project_params。要检查这一点,请尝试将project_params 放在project = current_user.project.build(project_params) 之前。这会告诉我们project_params 是否引起了任何问题。
    • 好的。我注释掉了构建行并将其替换为单行“project_params”。当我这样做时,那条线似乎没有引起任何问题。它只是在尝试保存项目而不定义它时导致错误,这是预期的。有什么想法吗?
    • 哈哈我想通了。我需要 [] 围绕 :id,而不是 ()
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多