fields_for 表单生成器对象为 nil

发布于 2024-08-24 23:58:51 字数 269 浏览 14 评论 0原文

有什么方法可以访问嵌套的 form_bulder.object 吗?

## controller
@project = Project.new
@project.tasks.build

form_for(@project) do |f|
  f.object.nil? ## returns false

  fields_for :tasks do |builder|
    builder.object.nil? ## returns true
  end
end

Any way to access a nested form_bulder.object?

## controller
@project = Project.new
@project.tasks.build

form_for(@project) do |f|
  f.object.nil? ## returns false

  fields_for :tasks do |builder|
    builder.object.nil? ## returns true
  end
end

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

霞映澄塘 2024-08-31 23:58:51

您必须在项目模型中具有 Accepts_nested_attributes_for 才能传递对象。

class Project < ActiveRecord::Base
  has_many :tasks
  accepts_nested_attributes_for :tasks ## this is required
end

You must have accepts_nested_attributes_for in the Project model in order for the object to be passed.

class Project < ActiveRecord::Base
  has_many :tasks
  accepts_nested_attributes_for :tasks ## this is required
end
遮了一弯 2024-08-31 23:58:51

fields_for 要求 tasks_attributes= 方法存在。 accepts_nested_attributes_for :tasks 为您创建此方法,但您也可以自己定义它:

def tasks_attributes=(params)
  # ... manually apply attributes in params to tasks
end

当此方法不存在时,builder.object 最终为零。

fields_for requires that the method tasks_attributes= exists. accepts_nested_attributes_for :tasks creates this method for you, but you can also just define it yourself:

def tasks_attributes=(params)
  # ... manually apply attributes in params to tasks
end

When this method does not exist, the builder.object ends up being nil.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文