ActionView::Helpers::FormHelper

alias: rich_text_area

def rich_textarea(object_name, method, options = {}, &block)

説明

モデルの属性に紐づく、Action Text のエディタ(<trix-editor>)と、中身を入れる hidden の <input> を作ります。

引数

値を変えると、ERB と HTML が変わります。

object_name:article
method:body
options= {}
"<p>Hello</p>"
hidden の <input> の value 属性の値になります。Trix はこの値を読んで、エディタの最初の中身にします。デフォルトではオブジェクトの値を HTML にして使います。
"body_input"
hidden の <input> の id 属性の値と、<trix-editor> の input 属性の値になります。Trix はこの id で、中身を書き込む <input> を探します。デフォルトでは trix_input_1 のような連番になります。番号はサーバーのプロセスでの通し番号です(このサイトでは、描画のたびに 1 に戻しています)。オブジェクトがあれば、dom_id で作った id 属性の値になります。
"other_form"
hidden の <input> にだけ追加します。<trix-editor> には追加しません。
{direct_upload_url: "/uploads"}
Rails は、data-direct-upload-url と data-blob-url-template を追加します。値は Active Storage のアップロード先の URL と、ファイルの URL のひな形です。:data で同じキーを渡すと、その値になります。ほかのキーは、そのまま data-* 属性として追加します。
"class_xxx"
trix-content の代わりに、渡した値を使います。trix-content がなくなるので、Trix の CSS のうち、中身(見出しやリストなど)の見た目が当たらなくなります。
ヘルパー共通の options

Rails はどのヘルパーでも同じように処理します。<trix-editor> は Trix が作った独自の要素なので、<input> だけの HTML 属性(pattern など)は、ここでは省いています。

〜_field などと共通

true にすると、次の順に探して、最初に見つかったものを placeholder 属性の値にします。
  1. helpers.placeholder.article.body の訳
  2. オブジェクトがあれば、activerecord.attributes.article.body の訳(human_attribute_name が返すもの)
  3. 属性名を humanize した文字列(Body)
Symbol(:home など)を渡すと、値ごとの訳を、次の順に探します。
  1. helpers.placeholder.article.body.home の訳
  2. オブジェクトがあれば、activerecord.attributes."article/body".home の訳
  3. humanize した文字列(オブジェクトがあれば Home、なければ Body)
文字列は、そのまま使います。false は訳を探さず、placeholder="false" になります。

フォームヘルパー共通

"q"
自動で作る name 属性の値の代わりに、渡した値を使います。nil を渡すと、name 属性を追加しません。
nil
自動で作る id 属性の値の代わりに、渡した値を使います。nil を渡すと、id 属性を追加しません。

すべてのヘルパー共通

true にすると disabled="disabled" を追加し、false にすると追加しません。readonly、required、autofocus など、Rails が持っている一覧(BOOLEAN_ATTRIBUTES)にある HTML 属性はどれも同じで、値が false と nil 以外なら 属性名="属性名" の形で追加します。
{describedby: ["name_help", "name_error"], invalid: false}
:data と同じく、aria-* 属性を追加します。値が配列なら、nil と空の文字列を外して、空白でつなぎます(何も残らなければ、追加しません)。値が Hash なら、値が false と nil 以外のキーを空白でつなぎます。
ここにない options は、<trix-editor> の HTML 属性になります。値が nil なら、その HTML 属性は追加しません。
&block= nil

ERB

直前との違い: 追加 削除 変更


          

HTML


          

プレビュー

プレビューを操作すると、フォーム送信の内容が変わります。

フォーム送信

フォームデータ

namevalue
リクエストボディを見る

Content-Type:


              

params


              
このサイトでは、画像やファイルをアップロードしません。エディタに画像を貼ると表示はされますが、アップロードが終わらないままなので、Trix は hidden の <input> に書き込みません。そのため、フォームデータにも入りません。
Action Text を使うアプリでは、貼った時点でフォームの送信とは別にアップロードします。