-# El formulario del artículo, con HTMX activado. @param :site [Site] @param :post [Post] @param :locale [Symbol, String] @param :dir [Symbol, String] :ruby except = %i[date] if (inverse = params.permit(:inverse).try(:[], :inverse).presence) except << inverse.to_sym end options = { id: params.require(:form), multipart: true, class: 'form post ', 'hx-swap': params.require(:swap), 'hx-target': "##{params.require(:target)}" } if post.new? url = options[:'hx-post'] = site_posts_path(site, locale: locale) options[:class] += 'new' else url = options[:'hx-patch'] = site_post_path(site, post.id, locale: locale) options[:method] = :patch options[:class] += 'edit' end = form_tag url, **options do - unless post.errors.empty? - title = t('.errors.title') - help = t('.errors.help') = render 'bootstrap/alert' do %h4= title %p= help %ul - post.errors.each do |attribute, errors| - if errors.size > 1 %li %strong= post_label_t attribute, post: post %ul - errors.each do |error| %li= error - else %li %strong= post_label_t attribute, post: post = errors.first -# Parámetros para HTMX %input{ type: 'hidden', name: 'hide', value: params.require((post.errors.empty? ? :show : :hide)) } %input{ type: 'hidden', name: 'show', value: params.require((post.errors.empty? ? :hide : :show)) } %input{ type: 'hidden', name: 'name', value: params.require(:name) } %input{ type: 'hidden', name: 'base', value: params.require(:base) } %input{ type: 'hidden', name: 'form', value: options[:id] } %input{ type: 'hidden', name: 'dir', value: dir } %input{ type: 'hidden', name: 'locale', value: locale } %input{ type: 'hidden', name: 'target', value: params.require(:target) } %input{ type: 'hidden', name: 'swap', value: params.require(:swap) } - if params[:inverse].present? %input{ type: 'hidden', name: 'inverse', value: params.require(:inverse) } = hidden_field_tag "#{base}[layout]", post.layout.name -# Dibuja cada atributo = render 'posts/attributes', site: site, post: post, dir: dir, base: base, locale: locale, except: except = yield(:post_form)