#ruby-on-rails #cocoon-gem
Вопрос:
Я использую драгоценный камень Кокон для создания динамической формы. Все работает нормально. Я могу добавлять новые записи, удалять записи. Но моя форма и кнопка отправки отображаются дважды. Я проверил application.html.erb
файл макета и не добавил coccon в свой файл макета.
Способ, которым я добавил драгоценный камень coccon, я добавил gem coccon
в файл Gemfile, а затем добавил coccon с помощью пряжи yarn add @nathanvda/cocoon
и добавил следующую строку в application.js
файл
require("jquery") require("@nathanvda/cocoon")
Мой вид формы выглядит так, как показано ниже (это форма, которая отображается дважды)
lt;%= form_with model: @user do |f| %gt; lt;%= f.fields_for :work_experiences do |work_experience| %gt; lt;div id='work_experiences'gt; lt;%= render "work_experience_fields", f: work_experience %gt; lt;/divgt; lt;%= link_to_add_association 'add more work experience', f, :work_experiences, data: { association_insertion_node: '#work_experiences', association_insertion_method: :append } %gt; lt;%= f.submit 'Update Work Experience' %gt; lt;% end %gt; lt;% end %gt;
Моя частичная _work_experience_fields
часть выглядит так, как показано ниже:
lt;%= f.label :job_tile, 'Job Title' %gt; lt;%= f.text_field :job_title, placeholder: 'Enter Job Title' %gt; lt;%= f.label :company_name, 'Company Name' %gt; lt;%= f.text_field :company_name, placeholder: 'Enter Company Name' %gt; lt;%= link_to_remove_association "remove task", f %gt;
Пожалуйста, помогите мне отладить, почему моя форма отображается дважды.
Ответ №1:
Ваша форма должна выглядеть так: в принципе, вам нужно закрыть fields_for
цикл.
lt;%= form_with model: @user do |f| %gt; lt;div id='work_experiences'gt; lt;%= f.fields_for :work_experiences do |work_experience| %gt; lt;%= render "work_experience_fields", f: work_experience %gt; lt;%end%gt; lt;/divgt; lt;%= link_to_add_association 'add more work experience', f, :work_experiences, data: { association_insertion_node: '#work_experiences', association_insertion_method: :append } %gt; lt;%= f.submit 'Update Work Experience' %gt; lt;% end %gt;