Move banner form partial to a component

Other than simplifying the controller, this'll make it easier to write
tests for this code.
This commit is contained in:
Javi Martín
2024-10-11 19:58:10 +02:00
parent 16fc9998c4
commit e850ae2ff9
5 changed files with 22 additions and 13 deletions

View File

@@ -1,8 +1,8 @@
<%= render "shared/globalize_locales", resource: @banner %> <%= render "shared/globalize_locales", resource: banner %>
<%= translatable_form_for [:admin, @banner] do |f| %> <%= translatable_form_for [:admin, banner] do |f| %>
<%= render "shared/errors", resource: @banner %> <%= render "shared/errors", resource: banner %>
<div class="row"> <div class="row">
<div class="small-12 medium-3 column"> <div class="small-12 medium-3 column">
@@ -36,7 +36,7 @@
<div class="row"> <div class="row">
<fieldset class="small-12 column"> <fieldset class="small-12 column">
<legend><%= t("admin.banners.banner.sections_label") %></legend> <legend><%= t("admin.banners.banner.sections_label") %></legend>
<%= f.collection_check_boxes(:web_section_ids, @banner_sections, :id, :name) do |b| %> <%= f.collection_check_boxes(:web_section_ids, sections, :id, :name) do |b| %>
<%= b.label do %> <%= b.label do %>
<%= b.check_box + t("admin.banners.banner.sections.#{b.text}") %> <%= b.check_box + t("admin.banners.banner.sections.#{b.text}") %>
<% end %> <% end %>
@@ -79,6 +79,6 @@
</div> </div>
<div class="row"> <div class="row">
<%= render Shared::BannerComponent.new(@banner) %> <%= render Shared::BannerComponent.new(banner) %>
</div> </div>
<% end %> <% end %>

View File

@@ -0,0 +1,15 @@
class Admin::Banners::FormComponent < ApplicationComponent
include TranslatableFormHelper
include GlobalizeHelper
attr_reader :banner
def initialize(banner)
@banner = banner
end
private
def sections
WebSection.all
end
end

View File

@@ -3,8 +3,6 @@ class Admin::BannersController < Admin::BaseController
has_filters %w[all with_active with_inactive], only: :index has_filters %w[all with_active with_inactive], only: :index
before_action :banner_sections, only: [:edit, :new, :create, :update]
respond_to :html, :js respond_to :html, :js
load_and_authorize_resource load_and_authorize_resource
@@ -47,10 +45,6 @@ class Admin::BannersController < Admin::BaseController
web_section_ids: []] web_section_ids: []]
end end
def banner_sections
@banner_sections = WebSection.all
end
def resource def resource
@banner ||= Banner.find(params[:id]) @banner ||= Banner.find(params[:id])
end end

View File

@@ -5,6 +5,6 @@
<h1><%= t("admin.banners.edit.editing") %></h1> <h1><%= t("admin.banners.edit.editing") %></h1>
<%= render "form" %> <%= render Admin::Banners::FormComponent.new(@banner) %>
</div> </div>
</div> </div>

View File

@@ -5,6 +5,6 @@
<h1><%= t("admin.banners.new.creating") %></h1> <h1><%= t("admin.banners.new.creating") %></h1>
<%= render "form" %> <%= render Admin::Banners::FormComponent.new(@banner) %>
</div> </div>
</div> </div>