【Rails】viewまとめ
随時まとめていっています🐰🐰
投稿フォーム
form_withヘルパー
form_withヘルパーとはヘルパーメソッドの一つ。
ヘルパーメソッドとは、Viewなどから呼び出す共通処理をまとめたものをいう。
doからendまでが範囲。
<%= form_with model: 〇〇, url:〇〇_path, method: :〇〇 |f| %>
<% end %>
「|f|」の部分はブロック変数と言い、特定の範囲内で使える変数のことで、今回だとform_withと同じdoからendまでの範囲で使うことができる変数
urlは記述しなくてもよい、modelはpostとgetの時は書かなくてよい。
<h1>新規投稿</h1>
<!-- form_with部分 -->
<%= form_with model: List.new do |f| %>
<h4>タイトル</h4>
<%= f.text_field :title %>
<!--単一行のテキストフィールド -->
<h4>本文</h4>
<%= f.text_area :body %>
<!--複数行のテキストフィールド -->
<%= f.submit '投稿' %>
<!--送信ボタン -->
<% end %>
ここで設定したブロック変数『f』にはモデルのList.newの情報が含まれる。
namespace使用時には注意!!
基本的にform_withのurlは書かなくていいことになっているが(書かないときはform_withが判断した先に送られることになっている。)namespaceを用いてる場合は記述しないとルーティングエラーが発生する。
投稿フォームの初期の行を増やす
<%= f.text_area :body, rows:'5' %>
rows:'5'
を追加する。
rowsのあとに入力した数字の行分フォームの大きさが変わる。今回は5なので初期から5行分の幅で表示される。
<%で始まるタグ
<% %>では、タグ内の結果がHTMLに変換されずに処理される。
<%= %>では、タグ内の結果がHTMLに変換される。
一覧表示
投稿したものの一覧を表示させるとき
<% @books.each do |book| %>
<% end %>
テキスト空欄の時'ここに記入'とかの文字表示させる時
placeholder:'ここに表示させたい文を記述' を追加する
<%= f.text_area :introduction, placeholder:"ここに説明文を記述します" %>
プルダウンの時はinclude_blank: "ここに表示させたい文を記述"
<%= f.collection_select(:genre_id, Genre.all, :id, :name, include_blank: "選択して下さい" ) %>
共通テンプレート
部分テンプレートファイルの作成。
共通化したい部分のコードをコピーして切り取り、新たに作成したファイルに貼る。この時ファイル名の先頭アンダースコアを付けることで部分テンプレートファイルだと認識される。
部分テンプレートファイルを呼び出す
さっき作成したファイルを呼び出すことでコード量を減らすことができる。
<%= render [部分テンプレートファイルの指定], [ローカル変数]:[渡す値] %>
<%= render 'post_images/list', post_images: @post_images %>
作成日の表示
<%= インスタンス変数.created_at.strftime('%Y/%m/%d') %>
=> この場合の表示20xx/x/x
数字の表示
<%= @product.add_tax_sales_price.to_s(:dalimited) %>
(:dalimited)は数値を3桁区切りにしてくれます。
Discussion