app/views/shared/metadata/edit/_request.html.erb
<%# NOTE[xxx]: Kind of a hack because we need 'request[request_metadata_attributes][X]' -%>
<%= fields_for(:request, request) do |form| %>
<%= form.fields_for(:request_metadata, request.request_metadata, builder: Metadata::FormBuilder) do |metadata_fields| %>
<%- request.request_metadata.field_infos.each do |field_info| %>
<!-- todo unify with how submission use field info-->
<%- if field_info.selection %>
<%= metadata_fields.select(field_info.key, field_info.selection, { prompt: "Select a #{field_info.key.to_s.gsub( '_', ' ')}" }) %>
<%- elsif field_info.kind == FieldInfo::BOOLEAN %>
<%= metadata_fields.check_box(field_info.key) %>
<%- elsif field_info.kind == FieldInfo::NUMERIC %>
<%= metadata_fields.number_field(field_info.key,field_info.parameters) %>
<%- else %>
<%= metadata_fields.text_field(field_info.key) %>
<%- end %>
<% end %>
<% end %>
<% end %>