[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」と表示されます。
これを「お名前」と表示したい場合はja.ymlに翻訳名を設定する必要があります。
activerecordではなくactivemodelなので注意。
# config/locales/ja.yml
ja:
activemodel:
attributes:
sheet_form:
name: 'お名前'
email: 'メールアドレス'
翻訳名を設定してrails serverを再起動すると正しくお名前と表示されます。