🐰

【Rails】viewまとめ

2023/07/14に公開

随時まとめていっています🐰🐰

投稿フォーム

form_withヘルパー

form_withヘルパーとはヘルパーメソッドの一つ。
ヘルパーメソッドとは、Viewなどから呼び出す共通処理をまとめたものをいう。
doからendまでが範囲。

基本形
<%= form_with model: 〇〇, url:〇〇_path, method: :〇〇 |f| %>
<% end %>

「|f|」の部分はブロック変数と言い、特定の範囲内で使える変数のことで、今回だとform_withと同じdoからendまでの範囲で使うことができる変数

urlは記述しなくてもよい、modelはpostとgetの時は書かなくてよい。

Listというモデルを使っているときの場合
<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