/ / Formulários aninhados usando a gema Cocoon no Ruby on Rails 4.2 - rubi nos trilhos, rubi, formulários, ruby ​​nos trilhos-4.2, gema do casulo

Formulários aninhados usando a gema Cocoon em Ruby on Rails 4.2 - rubi sobre trilhos, ruby, formas, ruby-on-rails-4.2, gema de casulo

Estou construindo um aplicativo Web usando o Rails 4.2 e tenho um modelo chamado Strategy, que tem um relacionamento has_many com um modelo Tactic.

Para criar uma visão da estratégia, preciso ter muitas táticas aninhadas no formulário. Eu tenho usado a gema Cocoon para desenvolver essa visão.

Até agora, consegui que o formulário funcionasse corretamente na maior parte do tempo, mas o problema é que eu queria adicionar um atributo Type ao meu modelo tático.

Para uma determinada estratégia, quero ter 3 táticas de um determinado tipo e 2 modelos de outro.

O problema é que, na minha opinião, todos os cinco modelos são listados em sequência, sem espaço para inserir meu próprio código HTML.

Existe uma maneira simples de separar quais deles são renderizados? No momento, minha visão é a seguinte ...

<%= form_for @strategy do |f| %>
<div class="strategy">
<%= f.label :name %>
<%= f.text_field :name %>
</div>

<div class="tactics">
<%= f.fields_for :tactics do |i| %>
<%= render "tactics_fields", f: i %>
<% end %>
</div>

<div class="buttons">
<%= f.button "Save Strategy", class: "button" %>
</div>
<% end %>

Se alguém puder oferecer algum conselho, seria muito apreciado.

Respostas:

0 para resposta № 1

Você quer que o formulário seja renderizado para que cada Estratégia tenha exatamente 5 Táticas listadas abaixo, das quais 3 são de um tipo e 2 são de outro?

Nesse caso, você pode fazer isso no seu controlador:

5.times do
tactic = @strategy.tactics.build
tactic.tactic_type = "tactic_type"
end

Além disso, observe que o uso de um atributo chamado type não é uma boa ideia Use algo como tactic_type em vez de.