Pergunta

Eu procurei e tentei muito, mas não posso conseguir isso como quero .. então aqui está o meu problema.

class Moving < ActiveRecord::Base
  has_many :movingresources, :dependent => :destroy
  has_many :resources, :through => :movingresources
end

class Movingresource < ActiveRecord::Base
  belongs_to :moving
  belongs_to :resource
end

class Resource < ActiveRecord::Base
  has_many :movingresources
  has_many :movings, :through => :movingresources
end

Movingresources contém campos adicionais, como quantity. Estamos trabalhando nas opiniões de 'Bill'. Graças ao formlastic para simplificar toda a coisa do relacionamento, apenas escrevendo

<%= form.input :workers, :as => :check_boxes %>

E eu recebo uma lista de seleção muito boa. Mas o que não descobri até agora é: como posso usar os campos adicionais do 'MovingResource', próximo ou em cada caixa de seleção meus campos desejados desse modelo?

Vi abordagens diferentes, principalmente com o loop manualmente através de uma matriz de objetos e criando os formulários apropriados, usando: para uma parte de um formulário.Inputs, ou não. Mas nenhuma dessas soluções estava limpa (por exemplo, funcionou para a visualização de edição, mas não para novos porque os objetos necessários não foram construídos ou gerados e gerá -los causando uma bagunça).

Eu quero saber suas soluções para isso!

Foi útil?

Solução

Ok, eu perdi a revolução de aceita_nest_attributes_for, isso explica por que não está realmente funcionando.

Isso me deu um grande passo adiante, mas acho que em algum lugar ainda terei algumas complicações com minhas relações complexas ^_ ^

class Moving < ActiveRecord::Base
    has_many :movingworkers, :dependent => :destroy
    has_many :workers, :through => :movingworkers
    accepts_nested_attributes_for :movingworkers
end


<% form.inputs :for => :movingworkers do |movingworker| %>
    <%= movingworker.inputs :worker, :quantity %>
<% end %>

Outras dicas

FormTastic's: label_method opção pode ajudar. Por exemplo

<%= form.input :movingworkers, :label_method => :worker %>

ou

<%= form.input :movingworkers, :label_method => Proc.new { |x| "#{x.worker} #{x.quantity}" } %>

Se os campos não existirem na nova visão, basta testar se for novo (novo recorde?) e apresentar um conjunto diferente de campos (se você envolver uma parte parcial, pode ser uma abordagem bastante limpa).

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top