module ComfortableMexicanSofa::Content::Tag::Mixins::FileContent

Public Instance Methods

content(file: self.file, as: self.as, variant_attrs: self.variant_attrs, label: self.label) click to toggle source

@param [ActiveStorage::Blob] file @param [“link”, “image”, “url”] as @param [{String => String}] variant_attrs ImageMagick variant attributes @param [String] label alt text for `as: “image”`, link text for `as: “link”` @return [String]

# File lib/comfortable_mexican_sofa/content/tags/mixins/file_content.rb, line 12
def content(file: self.file, as: self.as, variant_attrs: self.variant_attrs, label: self.label)
  return "" unless file

  url_helpers = Rails.application.routes.url_helpers

  attachment_url =
    if variant_attrs.present? && file.image?
      variant = file.variant(combine_options: variant_attrs)
      url_helpers.rails_representation_path(variant, only_path: true)
    else
      url_helpers.rails_blob_path(file, only_path: true)
    end

  case as
  when "link"
    "<a href='#{attachment_url}'#{html_class_attribute} target='_blank'>#{label}</a>"
  when "image"
    "<img src='#{attachment_url}'#{html_class_attribute} alt='#{label}'/>"
  else
    attachment_url
  end
end

Private Instance Methods

html_class_attribute() click to toggle source
# File lib/comfortable_mexican_sofa/content/tags/mixins/file_content.rb, line 37
def html_class_attribute
  return if @class.blank?
  " class='#{@class}'"
end