我有一个 Rails 表单,我想在其中添加功能,以将更多字段添加到嵌套形式的多对关系中。我有一个像这样的表格;
= form_for @company do |f|
= f.label :name, "Company name"
= f.text_field :name
= f.label :homepage_url, "Company website"
= f.text_field :homepage_url, placeholder: "www.mycompanywebsite.com"
= render "domains_form"
%div{class: "add_more_button"}
= link_to "Add more domains", "add_domain", remote: true, data: {mini: "true", theme: "b", iconpos: "left", icon: "plus", role: "button"}, id:"more_email_domains"
= f.submit "Continue", data: {theme: "a", icon: "arrow-r", iconpos: "right"}
部分“domain_form”看起来像这样;
= fields_for @company do |f|
= f.fields_for :domains do |d|
= d.label :identifier, "Domain name"
= d.text_field :identifier
这给了我这样的错误;
undefined method `[]' for nil:NilClass
Extracted source (around line #2):
1: %div
2: = fields_for @company do |f|
似乎部分找不到@company 实例,但它怎么可能呢?由于主模板可以访问实例,所以部分模板不应该也可以访问实例。我是否需要将公司实例作为区域设置专门传递。
这个问题更可能出现在 fields_for 调用中,因为我没有在任何 form_builder 对象上使用它,而是将它用作全局方法。由于 rails api 建议该方法可以独立使用http://api.rubyonrails.org/classes/ActionView/Helpers/FormHelper.html#method-i-fields_form,这样第一个 fields_for 采用父对象,以下一个采用孩子,根据我的假设,这应该可以正常工作。你能帮我解决这个问题吗?
谢谢