You might have seen the video of DHH about ActionText upcoming feature in Rails 6. This is a step by step guide for creating the exact same example as in the video.
- Clone the Rails repo
You might have seen the video of DHH about ActionText upcoming feature in Rails 6. This is a step by step guide for creating the exact same example as in the video.
| <!DOCTYPE html> | |
| <html> | |
| <head> | |
| <meta charset="UTF-8"> | |
| <title>Playground - JavaScript 101</title> | |
| <style media="screen"> | |
| .red { color: red; } | |
| </style> | |
| <link rel="stylesheet" | |
| href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css"> |
| class A extends Controller { | |
| static targets = ["a", "b"] | |
| connect() { | |
| A.targets // -> ["a", "b"] | |
| } | |
| } | |
| export default class extends Controller { | |
| static targets = ["a", "b"] |
| <!DOCTYPE html> | |
| <html> | |
| <head> | |
| ... | |
| </head> | |
| <body data-controller="js"> | |
| <%= yield %> | |
| </body> | |
| </html> |
To upgrade to Stimulus 3.0 and minimize the side effects of the npm package name change here is my suggestion
# add the proxy package
yarn add stimulus
# add the new @hotwired/stimulus package
yarn add @hotwired/stimulus
# add the dedicated package for the Webpack helpers| require 'prawn' | |
| require 'prawn/measurements' | |
| # I have a small collection of links to the resources I used to figure all | |
| # this out: http://pinboard.in/u:fidothe/t:pdfx | |
| module PDFX | |
| class PageBox | |
| include Prawn::Measurements | |
| attr_reader :bleed_mm |
| HISTOIRE;UNIVERS;Typo Body Size (px);Typo Body interlignage (px);C;M;J;N;COULEUR;ILLUSTRATRICE;AUTEUR;ASSETS - ILLUSTRATIONS;ASSETS - COUV-2&3 (TOUJOURS PAREIL);ASSETS - COUV 4 (RANDOM 5 IMG) - même univers;DÉFINITIONS | |
| Le Merveilleux;Écriture Libre;16;24;0;34;50;0;#FFBB87;Irène Bonacina;-;https://drive.google.com/drive/u/1/folders/1VBcX6Uzub6hmPxL-qTJICs-ZSbpEid5c;https://drive.google.com/drive/u/1/folders/1uwiGzQ_5AWREAPiZShx9jXi6Vp_XrY3X;https://drive.google.com/drive/u/1/folders/1hDEYxZiqNeuDzaol1_OEREYXWX9keeLr;NON | |
| La Science Fiction;Écriture Libre;16;24;50;57;12;0;#9378A7;Taty Vovchek;-;https://drive.google.com/drive/u/1/folders/1RDSlVztEvTsO44Vt2uz_8vne0S6U6fdd;https://drive.google.com/drive/u/1/folders/1uwiGzQ_5AWREAPiZShx9jXi6Vp_XrY3X;https://drive.google.com/drive/u/1/folders/1hDEYxZiqNeuDzaol1_OEREYXWX9keeLr;NON | |
| La Bergère et le Ramoneur;Forêt Enchantée;19;29;0;32;84;0;#FFAD29;Irène Bonacina;Hans Christian Andersen;https://drive.google.com/drive/folders/1Hzw7zF5qSyw3H1qU_SBFLy_NH9KSeqmE?usp=sharing; |
| # /app/models/concerns/has_many_attached.rb | |
| module HasManyAttached | |
| extend ActiveSupport::Concern | |
| class_methods do | |
| def has_many_attached(name, dependent: :purge_later, service: nil, strict_loading: false, **options) | |
| super(name, dependent: :purge_later, service: nil, strict_loading: false) | |
| if options[:file_types].any? | |
| validate "validate_#{name}_file_types".to_sym |
| class AttachedValidator < ActiveModel::EachValidator | |
| # Active Storage validator to ensure that an attachment is attached. | |
| # | |
| # usage: | |
| # validates :upload, attached: true | |
| # | |
| def validate_each(record, attribute, _value) | |
| return if record.send(attribute).attached? | |
| errors_options = {} |