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

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

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

[rails]carrierwaveで保存した画像のurlを取得する

carrierwave 0.10.0 で確認 imageカラムにcarrierwaveで保存した画像を保存している場合、デフォルトのままだとだとurlメソッドを実行してもpublic以下のパスのみで http://~ が設定されていません。