hello-world
webエンジニアのメモ。とりあえずやってみる。

[rails]ActiveModelを使ったフォームのラベル名を変更する

公開日時

DBには保存はしないけれど、ActiveRecordオブジェクトのようにvalidationを使いたい、という場合にActiveModelが使えます。

以下のようにActiveModelを使ってフォームを作成し、

class SampleForm
  include ActiveModel::Model
  attr_accessor :name, :email

  validates :name, presence: true
  validates :email, presence: true
end

viewにform要素を書くと

<div class="form-group">
  <%= f.label :name, class: "control-label" %>
  <%= f.text_field :name, class: 'form-control', value: @sheet_form.name, placeholder: '氏名' %>
</div>

そのままだと、label部分が「Name」と表示されます。

form

これを「お名前」と表示したい場合はja.ymlに翻訳名を設定する必要があります。

activerecordではなくactivemodelなので注意。

# config/locales/ja.yml

ja:
  activemodel:
    attributes:
      sheet_form:
        name: 'お名前'
        email: 'メールアドレス'

翻訳名を設定してrails serverを再起動すると正しくお名前と表示されます。

form2

参考


Related #Rails

rails4でアプリ作成後にDBを使わないようにしたい

あまりないケースではありますがメモ。

[rails]ELB使用時にヘルスチェック用のアクションを作成する

ELBにrailsアプリをぶら下げる場合、railsアプリが落ちたらELBから外れてもらいたいです。

[s3][ruby]静的ウェブサイトホスティングしたサイトのTwitter Cardsが表示されない場合の対応

先日、S3の静的ウェブサイトホスティングを使ってサイト公開を行った際に、ページ表示やFacebookのOGP表示は問題なくできるのにTwitter Cardsだけ表示されない、という現象が発生しました。