轨道4上的多对多控制器

时间:2015-05-06 01:55:47

标签: ruby-on-rails ruby-on-rails-4.1

我尝试使用多对多关联进行复选框。 我有树模型 公司:

class Empresa < ActiveRecord::Base
  has_many :empresa_pagamento
  has_many :formas_pagamentos, :through =>  :empresa_pagamento
  has_one :tipo_restaurante
  has_many :produtos
end

Forma Pagamento

class FormaPagamento < ActiveRecord::Base
  has_many :empresa_pagamento
  has_many :empresas, :through => :empresa_pagamento
end

Empresa Pagamento

class EmpresaPagamento < ActiveRecord::Base
  belongs_to :empresa
  belongs_to :forma_pagamento  
end

在我的empresa_controller上,我有我的参数

def empresa_params
  params.require(:empresa).permit(:nome, :descricao, :cnpj, :razao_social,:formas_pagamentos, :tipo_restaurante)
end

当我尝试保存时,我会这样做:

def create
  @empresa = Empresa.new(empresa_params)    

  respond_to do |format|
    if @empresa.save
      @empresa.formas_pagamentos.each do |forma_pagamento|
        empresa_pagamento = EmpresaPagamento.new
        empresa_pagamento.forma_pagamento = FormaPagamento.find(forma_pagamento)
        empresa_pagamento.empresa = @empresa
        empresa_pagamento.save
      end      
      format.html { redirect_to @empresa, notice: 'Empresa was successfully created.' }
      format.json { render :show, status: :created, location: @empresa }
    else
      format.html { render :new }
      format.json { render json: @empresa.errors, status: :unprocessable_entity }
    end
  end
end

在我的_form上我有

<div class="field">
  <%= f.label :formas_pagamentos %><br>
  <%= f.collection_select(:formas_pagamentos, FormaPagamento.all, :id, :nome,{:prompt => "Selecione"}, {:multiple => true}) %>
</div>

0 个答案:

没有答案