Ruby on Rails 4のメソッド作成と強力なパラメータに問題があります。ネストされた値を持つ投稿を送信すると、 create_atとupdate_at、私のコード以下:ネストされた属性がテーブルRailsとAngularJSに挿入されない
-
{ "CliRazao"=>"FORNECEDOR 1.", "CliCNPJ"=>"78456896000185", "CliEmail"=>"[email protected]", "CliObs"=>"Teste\nTeste\nTEste", "enderecos"=>[ { "EndCEP"=>"17456789", "EndTipo"=>"E", "EndLogradouro"=>"RUA DOS TUCUNARES", "EndNumero"=>"78", "EndBairro"=>"JARDIM AQUARIUS", "EndCidade"=>"MARILIA", "EndEstado"=>"SP" }, { "EndCEP"=>"18456123", "EndTipo"=>"C", "EndLogradouro"=>"RUA AFONSO PENA", "EndNumero"=>"78", "EndBairro"=>"JARDIM NOVO MUNDO", "EndCidade"=>"MARILIA", "EndEstado"=>"SP" } ], "CliERP"=>"C-00125", "cliente"=> { "CliERP"=>"C-00125", "CliRazao"=>"FORNECEDOR 1", "CliCNPJ"=>"78456896000185", "CliEmail"=>"[email protected]", "CliObs"=>"Teste\nTeste\nTEste" }
}
マイモデルcliente.rb(父)を送る私のJSON
クラスCliente <はActiveRecord ::ベース にhas_many:enderecos、自動保存:真
accepts_nested_attributes_for :enderecos
エンド
マイモデルendereco.rb(子供)
クラスEndereco <のActiveRecord ::ベース 所属:クライアント エンド
私のコントローラ
クラスClientesController < ApplicationControllerに デフ指数 @clientes = Cliente.all エンド
def findById @clientes = Cliente.find(params[:id]); end def create @cliente = Cliente.new(cliente_params); @cliente.enderecos.build(cliente_params[:enderecos_attributes]); logger.debug "Enderecos => #{cliente_params}" respond_to do |format| if @cliente.save format.json { render :show, status: :created } else format.json { render json: @cliente.errors, status: :unprocessable_entity } end end end def update end private def cliente_params params.require(:cliente).permit(:CliERP, :CliRazao, :CliCNPJ, :CliEmail, :CliObs, enderecos_attributes: [:EndTipo, :EndLogradouro, :EndNumero, :EndBairro, :EndCidade, :EndCEP, :EndEstado]) end
エンド
enderecosは私のデータベースと例外なくに挿入されていませんスローされます。
ありがとうございます!
送信したものが間違ったキーを持っているため、 "enderecos" => .... '' enderecos_attributes "=> ....'になるはずです。 –