2014-11-26 3 views
0

Как вы можете динамически добавлять/удалять новое поле ввода в форме без использования частичного.Добавить новое поле в форму

<%= f.fields_for :list_entries do |list_entry| %> 
    <div id="entries"> 
    <div class="control-group" id="new_entry"> 
     <%= list_entry.label :description, 'Description:', class: "control-label mandatory_field"%> 
     <div class="controls"> 
     <%= list_entry.text_field(:description, class: "m-wrap col-lg-8")%> 
     </div> 
    </div> 
    <a href="javascript:;" id="addNewEntry">Add Entry</a> 
    </div> 
<% end %> 

...

<script> 
    $(document).ready(function(){ 
     $('#addNewEntry').click(function(){ 
      $('#entries').append() 
     }); 
      $('#entries').on('click', '#list_entry', function(){ 
       $(this).closest('.control-group').remove(); 
      }); 
    }); 
</script> 

Я не уверен, что положить в Append. Если я добавлю HTML-код в append, fields_forlist_entry не переносится. То же самое произошло, когда я использовал частичное. Я не хочу использовать драгоценный камень кокона, так как это бесконечно малая часть моего приложения.

Любые идеи ...?

+0

Вы должны помнить, что шаблон ERB в ваш первый блок кода запускается на сервере для генерации raw html. Javascript во втором куске кода запускается в клиенте и может работать только с сырым html - он никогда не видит ваш код rails, который генерирует html. Поэтому, размышляя о том, что вы хотите от javascript, вам нужно посмотреть на html, который у вас есть на странице, и что вы можете с ним делать. В этом случае у вас может быть фиктивный, скрытый, бит html, который клонирует javascript, изменяет некоторые атрибуты и затем добавляется в список полей. –

ответ

0

Я вижу 2 различных возможности здесь

  1. Вы можете использовать Append, и сделайте следующее $(object).append("<input name='somename' value='someval'/>")

  2. запроса Отправить Аякс сервер. Сервер будет реагировать с точки зрения как respond.js.erb, в котором вы можете сделать следующее

$(object).append('<%= j(render some_partial_with_field) %>'

где внутри частичного вы можете создать любой код нужно

Смежные вопросы