接受嵌套属性

时间:2015-12-27 17:21:41

标签: ruby-on-rails ruby activerecord

可能是一个简单的问题,但我无法将数据从一个表单传递给另一个模型。我刚刚开始,所以代码非常简单。我有2个型号

class Client < ActiveRecord::Base
    has_many :properties
end


class Property < ActiveRecord::Base
    belongs_to :client
    accepts_nested_attributes_for :client
end

我正在使用form_for并嵌套f.fields_for

<%= form_for(@property) do |f| %>

    <div class="form-group">
        <label for="exampleInputEmail1"> Descripcion:</label>
        <%= f.text_field :descripcion, class: "form-control" %>
    </div>

    <%= f.fields_for :clients do |clients| %> 
        <%= clients.text_field :nombre %>
        <%= clients.text_field :apellido %>
    <% end %>
<% end %>

该表单仅适用于一个模型(属性),没有错误,但客户端的数据只是没有进入我的客户端模型。 我猜测问题可能是嵌套表单的强参数,但我无法解决问题。这是我的控制器属性:

class PropertiesController < ApplicationController
  def index
    @properties = Property.all
    @clients = Client.all
  end

 def new
    @property = Property.new
 end

 def create
    @property=Property.new(params.require(:property).permit(:direccion, :descripcion, :piezas, :precio, :banos, :superficie_total, :pisos, :piscina, :superficie_construida, :amoblado, :estacionamiento, :bodega, :estado, :casa, :departamento, :terreno, :gastos_comunes, :comentarios, :comuna, :ciudad))

   if @property.save
     flash[:notice] = "La Propiedad ha sido creada exitosamente =)"
     redirect_to(:action => 'index')

   else
     render('new')
     flash[:error] = "Por algun motivo no pudimos crear la propiedad =("
   end
end

  def show
     @property = Property.all
  end

有人可以给我一些帮助吗?

1 个答案:

答案 0 :(得分:0)

你犯了一些错误。

第一个错误 正如Documentation NestedAttributes中所提到的,您使用了错误的class Client < ActiveRecord::Base has_many :properties accepts_nested_attributes_for :properties end class Property < ActiveRecord::Base belongs_to :client end

if (this.entity == Q.FG(45768))
{
//read data in one manner
}

else if (this.entity == Q.FG(96583))
{
//read data in another manner
}

第二个错误是强参数。我想建议你去投掷Sitepoint rails-forms-with-nested-attributes会帮助你。