app/views/events/_form.html.erb
<%= form_for [group, event], html: { multipart: true } do |f| %>
<%= render "error_messages", object: event %>
<div class="form-group box p-4 mt-2rem mb-2rem">
<h3 class="mb-4">1. Event info</h3>
<div class="form-group">
<%= f.label :title %>
<small class="text-muted">Required *</small>
<%= f.text_field :title, class: "form-control",
required: true %>
</div>
<div class="form-group">
<%= f.label :description %>
<small class="text-muted">Required *</small>
<%= f.hidden_field :description, required: true %>
<trix-editor input="event_description" class="form-control">
</trix-editor>
</div>
<div class="form-group mb-0">
<%= f.label :website %>
<%= f.text_field :website, placeholder: "https://www.eventwebsite.com",
class: "form-control" %>
</div>
</div>
<div class="form-group box p-4 mb-2rem">
<h3 class="mb-4">2. Location</h3>
<%= f.fields_for :address do |address_form| %>
<div class="form-group">
<%= address_form.label :place_name %>
<%= address_form.text_field :place_name, class: "form-control" %>
</div>
<div class="form-group">
<%= address_form.label :street1, "Address 1" %>
<small class="text-muted">Required *</small>
<%= address_form.text_field :street1, class: "form-control",
required: true %>
</div>
<div class="form-group">
<%= address_form.label :street2, "Address 2" %>
<%= address_form.text_field :street2, class: "form-control" %>
</div>
<div class="form-group">
<%= address_form.label :city %>
<small class="text-muted">Required *</small>
<%= address_form.text_field :city, class: "form-control",
required: true %>
</div>
<div class="form-group">
<%= address_form.label :state %>
<%= address_form.text_field :state, class: "form-control" %>
</div>
<div class="form-group">
<%= address_form.label :post_code %>
<small class="text-muted">Required *</small>
<%= address_form.text_field :post_code, class: "form-control",
required: true %>
</div>
<div class="form-group mb-0">
<%= address_form.label :country %>
<small class="text-muted">Required *</small>
<%= address_form.country_select :country,
{ include_blank: true,
selected: event.country || request.location.country_code },
class: "form-control custom-select",
required: true %>
</div>
<% end %>
</div>
<div class="form-group box p-4 mb-2rem">
<h3 class="mb-4">3. Date</h3>
<div class="form-group event-start-date row">
<div class="col">
<%= f.label :start_date, class: "event-date-label" %>
<small class="text-muted">Required *</small>
</div>
<div class="col-md-auto">
<%= f.datetime_select :start_date, default: event.default_start_date,
start_year: Time.now.year, end_year: Time.now.year + 1,
class: "form-control custom-select",
required: true %>
</div>
</div>
<div class="form-group row mb-0">
<div class="col">
<%= f.label :end_date, class: "event-date-label" %>
<small class="text-muted">Required *</small>
</div>
<div class="col-md-auto">
<%= f.datetime_select :end_date, default: event.default_end_date,
start_year: Time.now.year, end_year: Time.now.year + 1,
class: "form-control custom-select" %>
</div>
</div>
</div>
<div class="form-group box p-4 mb-2rem">
<h3 class="mb-4">
4. Image
<small class="text-muted ml-010rem">Required *</small>
</h3>
<div class="form-group mb-0">
<%= f.label :image, hidden: true %>
<% if event.image? %>
<%= image_tag(event.image_url,
srcset: "#{event.image_url(:medium)} 510w, #{event.image_url(:thumb)} 350w",
class: "img-fluid mb-2rem") %>
<% end %>
<%= f.file_field :image %>
<%= f.hidden_field :image_cache %>
</div>
</div>
<% if current_user == event.organizer && action_name == "edit" %>
<div class="form-group box p-4 mb-2rem">
<h3 class="mb-4">4. Danger zone</h3>
<div class="form-group mb-0">
<p class="font-italic mb-4">
This action is not reversible.
</p>
<%= link_to "Delete event",
group_event_path(group, event, user_id: current_user.id),
data: { confirm: "Are you sure you want to delete this event?" },
method: :delete, class: "btn btn-danger btn-lg" %>
</div>
</div>
<% end %>
<%= f.button yield(:button_text),
class: "btn btn-primary btn-block btn-lg btn-3d mt-4 mb-4",
data: { disable_with: "Saving... #{render 'spinner'}" } %>
<% end %>