🦖

memo

2024/08/21に公開

PFの評価が返ってきて、
メンターさんに教えていただいた事をメモ。

simple_formatメソッド

<%= simple_format(@post.body, sanitize: true) %>

最初作成した時は、
カリキュラムでやった、xxx.text_areaで作成したけど、
これだと、フィールド上で改行しても、いざ投稿したら改行が反映されないカッタ。
ので、simple_formatメソッドを使うと、フィールドで改行したら、ちゃんと反映される。

simple_format は表示するためのヘルパーであり、ユーザーからの入力フォーム(text_area)を作成するものではありません。そのため、text_area を変更する必要はなく、simple_format を使うのはユーザーが入力した内容を表示する際です。

DMが来た日時表示

「 DM機能メッセージ表示は、各メッセージの投稿日時表示 」確かに〜。

  <div class="row">
    <table class="table table-hover">
    <% if @messages.present? %>
      <% @messages.each do |m| %>
        <tr>
          <td><%= m.user.name %></td>
          <td><%= m.message %></td>
          <td><%= m.created_at.strftime('%Y/%m/%d %T') %></td>
        </tr>
      <% end %>
    <% end %>
    </table>
  </div>

通知機能にも、あった方がいいよな〜っと思ったので、
通知の方にも、日時表示できるようにしました。
今あるSNSのDM機能は、「何分前」「何時間前」って通知に表示されてるから、
その方法を調べた。

time_ago_in_wordsメソッド

<%= time_ago_in_words(notification.created_at) %> 前

time_ago_in_wordsメソッド

  • 「 5 minutes 」「 2 hour ago 」といった形式で時間を表示できる
  • 日本語に変換したい場合は、rails-i18nを使っての本語にする。
config/locales/ja.yml
ja:
  datetime:
    distance_in_words:
      half_a_minute: "30秒"
      less_than_x_seconds:
        one: "1秒未満"
        other: "%{count}秒未満"
      x_seconds:
        one: "1秒"
        other: "%{count}秒"
      less_than_x_minutes:
        one: "1分未満"
        other: "%{count}分未満"
      x_minutes:
        one: "1分"
        other: "%{count}分"
      about_x_hours:
        one: "約1時間"
        other: "約%{count}時間"
      x_days:
        one: "1日"
        other: "%{count}日"
      about_x_months:
        one: "約1ヶ月"
        other: "約%{count}ヶ月"
      x_months:
        one: "1ヶ月"
        other: "%{count}ヶ月"
      about_x_years:
        one: "約1年"
        other: "約%{count}年"
      over_x_years:
        one: "1年以上"
        other: "%{count}年以上"
      almost_x_years:
        one: "1年近く"
        other: "%{count}年近く"

デフォルトタイムゾーン

  • RailsはデフォルトタイムゾーンがUTC(協定時)になってるため、
    created_at``updated_atが、日本時間から9時間差になっているので、日本時間に変更する。
config/application.rb
require_relative "boot"

require "rails/all"

# Require the gems listed in Gemfile, including any gems
# you've limited to :test, :development, or :production.
Bundler.require(*Rails.groups)

module Inuming
  class Application < Rails::Application
    # Initialize configuration defaults for originally generated Rails version.
    config.load_defaults 6.1

    # Configuration for the application, engines, and railties goes here.
    #
    # These settings can be overridden in specific environments using the files
    # in config/environments, which are processed later.
    #
    # config.time_zone = "Central Time (US & Canada)"
<追記>
    config.time_zone = 'Tokyo'
<ここまで>
    # config.eager_load_paths << Rails.root.join("extras")
    config.i18n.default_locale = :ja
  end
end

おまけ

今更書くのは、きっと恥ずかしいのですが、へぇってなった事。

Gitのコミットメッセージでの"Add"

Gitでは、コミットメッセージとして、"Add"を使うことがよくある。
これは、新しいファイルや機能を追加したことを意味する。

マイグレーションでの"Add"

Railsのマイグレーションファイルを作成する際、例えばテーブルに新しいカラムを追加する時、マイグレーションの名前に"Add"を使う。

Discussion