app/views/otus/_otu_picker.html.erb
<% field_name ||= :otu_id %>
<% object_method ||= :otu %>
<div class="otu_picker" id="XXX_otu_picker" data-object-name="<%= f.object_name -%>">
<%= f.label field_name, 'OTU' %><br>
<div class="field inline_otu_picker">
<%= f.text_field field_name, value: otu_autocomplete_selected_tag(f.object.send(object_method)),
id: 'XXX_otu_picker_autocomplete',
class: 'otu_picker_autocomplete expandable',
placeholder: 'Select or create an OTU'
%>
<%= link_to 'Add new', '#', id: :otu_picker_add_new, data: { turbolinks: false }, class: 'new_plus', hidden: true %>
</div>
<div id="new_otu" class="add_new" hidden >
<%= content_tag(:div, 'New OTU', class: 'injected_new_header') -%>
<%= f.fields_for :otu_attributes, Otu.new do |o| %>
<div class="flex-separate inline_fields">
<div class="fields">
<div class="field">
<%= o.label :name %>
<%= o.text_field :name, id: 'XXX_otu_name_field' %>
</div>
<div class="field">
<%= o.label :taxon_name %>
<%= render'/workbench/elements/forms/ajax_select',
fields_for_object: o,
controller: '/taxon_names',
object: "#{f.object_name}[otu_attributes]",
method: 'taxon_name_id',
tag_id: 'taxon_name_id_for_inline_otu_picker',
display: nil,
size: 20 %>
</div>
</div>
<div class="fields">
<%= o.hidden_field :id, value: f.object.try(object_method).to_param, id: :selected_otu_id, name: "#{f.object_name}[#{field_name}]" -%>
<div class="link">
<%= link_to "Add", '#', id: 'otu_picker_add_ok', data: { turbolinks: false }, title: 'Add' %>
<%= link_to "Undo", '#', id: 'otu_picker_new_undo', data: { turbolinks: false }, title: 'Undo' %>
</div>
</div>
</div>
<% end %>
</div>
</div>