#ruby-on-rails #ruby #forms #ruby-on-rails-6
#ruby-on-rails #ruby #формы #ruby-on-rails-6
Вопрос:
У меня следующая проблема:
Я хочу сгенерировать несколько текстовых полей в форме, чтобы в итоге получить следующий результат:
[
{foo: 0},
{foo: 1},
{foo: 10},
{foo: 11},
{foo: 100}
]
В моей форме я написал следующий код:
<%= f.fields_for(:foo_associates, @bar.foo_associates) do |ff| %>
<%= ff.text_field(:maincompany_id) %>
<%= ff.text_field(:maincompany_id) %>
<%= ff.text_field(:maincompany_id) %>
<%= ff.text_field(:maincompany_id) %>
<%= ff.text_field(:maincompany_id) %>
<% end %>
Таким образом, отображаемый HTML-код должен выглядеть следующим образом:
<input name="company[foo_associates_attributes][0][foo]" />
<input name="company[foo_associates_attributes][1][foo]" />
<input name="company[foo_associates_attributes][2][foo]" />
<input name="company[foo_associates_attributes][3][foo]" />
<input name="company[foo_associates_attributes][4][foo]" />
Но это выглядит так:
<input name="company[foo_associates_attributes][0][foo]" />
<input name="company[foo_associates_attributes][0][foo]" />
<input name="company[foo_associates_attributes][0][foo]" />
<input name="company[foo_associates_attributes][0][foo]" />
<input name="company[foo_associates_attributes][0][foo]" />
И мой результат выглядит так:
[
{foo: 0}
]
Что я делаю не так?
Все ответы приветствуются.
Ответ №1:
В вашем контроллере
#new
5.times {@bar.foo_associates.build}
В форме
<%= f.fields_for(:foo_associates) do |ff| %>
<%= ff.text_field(:foo) %>
<% end %>
Комментарии:
1. Я бы также предложил использовать драгоценный камень-кокон. Это позволит динамически выстраивать отношения в форме. github.com/nathanvda/cocoon . Таким образом, вы могли бы начать с 1 или построенных ассоциаций, как говорит @dileepnandanam, но затем вы можете использовать gem для добавления 3,4,5 и т.д.
2. Но когда я делаю ЭТО таким образом, я могу связать только фиксированное количество foo_associates с @bar?
3. да, @Daniel, только что опубликовал ответ, чтобы исправить фундаментальную ошибку. вы должны использовать github.com/nathanvda/cocoon