app/views/constructions/_form.html.erb
<%= fields_for :construction, construction do |f| %>
<%= hidden_field_tag "construction[id]", f.object.id if f.object.id.present? %>
<%= hidden_field_tag "construction[generic_type]", construction.generic_type %>
<div class="row">
<div class="col">
<div class="form-group">
<label for="description">Baustellen-Titel *</label>
<%= f.text_field :title, required: true, class: "form-control" %>
</div>
</div>
</div>
<% list_of_content_blocks = construction.content_blocks.presence || [OpenStruct.new] %>
<div class="row">
<div class="col">
<div class="form-group">
<label for="description">Weitere Informationen</label>
<% list_of_content_blocks.each_with_index do |content_block, index| %>
<%= f.fields_for "content_blocks[#{index}]", content_block do |fcb| %>
<%= fcb.text_area :body, class: "form-control", rows: 10 %>
<% end %>
<% end %>
</div>
</div>
</div>
<div class="row">
<div class="col">
<div class="form-group">
<label for="description">Richtung</label>
<%= text_field_tag(
"construction_payload_direction",
(construction.payload || {})["direction"],
placeholder: "Norden, Osten, Süden, Westen",
class: "form-control",
name: "construction[payload][direction]"
)%>
</div>
</div>
</div>
<div class="row">
<div class="col">
<div class="form-group">
<label for="description">Grund</label>
<%= text_field_tag(
"construction_payload_cause",
(construction.payload || {})["cause"],
class: "form-control",
name: "construction[payload][cause]"
)%>
</div>
</div>
</div>
<%= render partial: "shared/partials/restrictions_form", locals: { record: construction, record_type: "construction", form: f } %>
<div class="row">
<div class="col">
<h2 class="d-sm-flex align-items-center justify-content-between my-4">
Kategorien
</h2>
<p>
Jede Baustelle kann in einer oder mehreren Kategorien abgelegt werden.
<p>
<%= render partial: "shared/partials/categories_form", locals: { record: construction, record_type: "construction", form: f, tag_filter: "generic_item_construction_site" } %>
<%= link_to "#", class: "btn btn-sm btn-secondary", id: "nested-add-category" do %>
<i class="fas fa-plus text-white mr-2"></i>
Kategorie hinzufügen
<% end %>
</div>
</div>
<hr />
<div class="row">
<div class="col">
<h3 class="d-sm-flex align-items-center justify-content-between my-4">
Dateien
</h3>
</div>
</div>
<%= render partial: "shared/partials/media_contents_form", locals: { record: construction, form: f } %>
<hr />
<% list_of_locations = construction.locations.presence || [OpenStruct.new(geo_location: nil)] %>
<% list_of_locations.each_with_index do |location, index| %>
<%= fields_for "construction[locations][#{index}]", location do |fl| %>
<div class="row">
<div class="col">
<div class="form-group">
<label for="description">Standort</label>
<%= fl.text_field :name, class: "form-control" %>
</div>
</div>
</div>
<% end %>
<%= fields_for "construction[locations][#{index}][geo_location]", location.geo_location do |fgl| %>
<div class="row">
<div class="col-lg-6">
<div class="form-group">
<label for="description">Latitude</label>
<%= fgl.text_field :latitude, class: "form-control" %>
</div>
<div class="form-group">
<label for="description">Longitude</label>
<%= fgl.text_field :longitude, class: "form-control" %>
</div>
</div>
<div class="col-lg-6">
<div class="form-group">
<div id="leafletMap" class="leafletMap"></div>
</div>
</div>
</div>
<% end %>
<% end %>
<hr />
<%= render(
partial: "shared/partials/dates_form",
locals: {
record: construction,
form: f,
requireds: ["date_start", "date_end"],
values: {
date_start: Time.now.to_date,
date_end: Time.now.to_date
},
force_visibility: true
}) %>
<script type="text/javascript">
$('#construction_dates_0__date_start').change(function() {
$('#construction_dates_0__date_end').val($('#construction_dates_0__date_start').val())
});
</script>
<hr />
<div class="row justify-content-center pb-4">
<%= f.submit "Speichern", class: "btn btn-primary btn--big" %>
</div>
<% end %>