Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 4 接受\u嵌套的\u属性\u以不创建attr writer方法_Ruby On Rails 4_Nested Attributes - Fatal编程技术网

Ruby on rails 4 接受\u嵌套的\u属性\u以不创建attr writer方法

Ruby on rails 4 接受\u嵌套的\u属性\u以不创建attr writer方法,ruby-on-rails-4,nested-attributes,Ruby On Rails 4,Nested Attributes,我的担保人模型有许多地址,如:addressable,并接受地址的嵌套属性。但是,当白名单地址属性时,params散列不能识别地址属性:[:street,:city等]。我不断得到未经许可的参数地址。有人对此有意见吗 我的模型: class UserApplication < ActiveRecord::Base belongs_to :user has_many :guarantors, dependent: :destroy accepts_nested_att

我的担保人模型有许多地址,如:addressable,并接受地址的嵌套属性。但是,当白名单地址属性时,params散列不能识别地址属性:[:street,:city等]。我不断得到未经许可的参数地址。有人对此有意见吗

我的模型:

class UserApplication < ActiveRecord::Base
    belongs_to :user
    has_many :guarantors, dependent: :destroy
    accepts_nested_attributes_for :guarantors
end

class Guarantor < ActiveRecord::Base
has_many :addresses, :as => :addressable, dependent: :destroy
belongs_to :user_application, :foreign_key => :user_application_id
accepts_nested_attributes_for :addresses
end

class Address < ActiveRecord::Base
belongs_to :addressable, :polymorphic => true
end
表单的“嵌套”部分:

  <%= f.fields_for :guarantors do |builder| %>
    <div class="row">
      <div class="col-md-1">
        <h6>FIRST NAME</h6>
        <%= builder.text_field :fname, :class => "form-control" %>
      </div>
      <div class="col-md-2">
        <h6>LAST NAME</h6>
        <%= builder.text_field :lname, :class => "form-control" %>
      </div>      
      <div class="col-md-2">
        <h6>RELATIONSHIP</h6>
        <%= builder.text_field :relationship, :class => "form-control" %>
      </div>   
      <div class="col-md-2">
        <h6>PHONE</h6>
        <%= builder.number_field :phone, :class => "form-control" %>
      </div>
      <div class="col-md-2">
        <h6>EMAIL</h6>
        <%= builder.text_field :email, :class => "form-control" %>
      </div>     
    </div>
    <%= f.fields_for :addresses do |builder| %>
        <div class="col-md-1">
          <h6>ADDRESS</h6>
          <%= builder.text_field :street, :class => "form-control" %>
        </div>
        <div class="col-md-2">
          <h6>ADDRESS 2</h6>
          <%= builder.text_field :street_2, :class => "form-control" %>
        </div>      
        <div class="col-md-2">
          <h6>CITY</h6>
          <%= builder.text_field :city, :class => "form-control" %>
        </div>   
        <div class="col-md-2">
          <h6>STATE</h6>
          <%= builder.text_field :state, :class => "form-control" %>
        </div>
        <div class="col-md-2">
          <h6>ZIP</h6>
          <%= builder.number_field :zip, :class => "form-control" %>
        </div>     
      </div> 
    <% end %>
  <% end %>
我一直在获取未经许可的参数地址,而且它也没有嵌套在guarantors\u属性中。有什么想法吗?提前感谢。

当您为:address构建字段时,我想您希望它是builder.fields,因为地址嵌套在担保人下

f.fields_for :guarantors do |builder|
  # fields
  builder.fields_for :addresses do |builder|
    # fields
  end
end
代码清晰度 我还将使块名更加具体,因为有两个构建器变量会混淆您所处的范围

f.fields_for :guarantors do |guarantor_form|
  # fields
  guarantor_form.fields_for :addresses do |address_form|
    # fields
  end
end

您不需要:address在担保人类中的accepts\u nested\u attributes\u中为复数吗?如果这还不能解决问题,那么查看表单中的视图会很有帮助,以确保表单设置正确,可以在发送消息时在“*\u attributes”键下传递哈希值是的,编辑问题。复制/粘贴错误,它实际上是:模型中的地址。现在将添加表单…谢谢!问题出在builder.fields_上。谢谢你的代码清晰提示,我还是个新手。
f.fields_for :guarantors do |builder|
  # fields
  builder.fields_for :addresses do |builder|
    # fields
  end
end
f.fields_for :guarantors do |guarantor_form|
  # fields
  guarantor_form.fields_for :addresses do |address_form|
    # fields
  end
end