Rails: リソースの一括登録画面: 4: スタイリングの修正

前回の続きです。今回はTailwind CSSでアプリを作成した時(rails new bulk_account -c tailwind)のスキャフォールドにスタイルに合わせます。

環境

ruby 3.1
Rails 7.0.2.3
foreman 0.87.2
tailwindcss-rails 2.0.10

実装

Tailwind CSSを導入します。

bin/bundle add tailwindcss-rails
bin/rails tailwindcss:install
bin/dev

app/views/bulk_accounts/new.html.erb
notice、alert、見出しやボタンにスタイルを追加します。 
Accountの入力フォームを部分テンプレートにしました。

<div class="mx-auto md:w-2/3 w-full">
  <% if notice.present? %>
    <p class="py-2 px-3 bg-green-50 mb-5 text-green-500 font-medium rounded-lg inline-block" id="notice"><%= notice %></p>
  <% end %>
  <% if alert.present? %>
    <p class="py-2 px-3 bg-red-50 mb-5 text-red-500 font-medium rounded-lg inline-block" id="alert"><%= alert %></p>
  <% end %>

  <h1 class="font-bold text-4xl">New accounts</h1>

  <%= form_with(url: :bulk_accounts) do |form| %>
    <%= render partial: "account", collection: @accounts %>
    <div>
      <%= form.submit class: "rounded-lg py-3 px-5 bg-blue-600 text-white inline-block font-medium cursor-pointer" %>
    </div>
  <% end %>
</div>

app/views/bulk_accounts/_account.html.erb
部分テンプレート用にファイルを追加します。
入力フォームのグループにスタイルを追加します。

<div class="py-2 px-3 mb-5">
  <%= fields_for "accounts[]", account do |account_fields| %>
    <%= render "account_text_field", account: account, account_fields: account_fields, key: :name %>
    <%= render "account_text_field", account: account, account_fields: account_fields, key: :email %>
  <% end %>
</div>

app/views/bulk_accounts/_account_text_field.html.erb
テキストフィールドとエラーメッセージにスタイルを追加します。

<div class="my-5">
  <%= account_fields.label key %>
  <%= account_fields.text_field key, class: "block shadow rounded-md border border-gray-200 outline-none px-3 py-2 mt-2 w-full" %>
  <% if account.errors[key].any? %>
    <div class="bg-red-50 text-red-500 px-3 py-2 font-medium rounded-lg mt-3">
      <%= account.errors.full_messages_for(key).first %>
    </div>
  <% end%>
</div>

課題

  • Account の登録数を増減できません。

  • 見栄え(名前とメールアドレスのラベル名の修正と横並び)が気になりますが一旦保留にします。

以上です。

続きを書きました。

この記事が気に入ったらサポートをしてみませんか?