YAMLファイルが便利なので魔改造した

YAMLファイルが便利なので魔改造していたらこんなのが出てきた
Nested I18n namespace lookup under "activerecord.attributes.patrol" is no longer supported

通常状態

ja:
  activerecord:
    attributes:
      patrol:
        id: 'ID'

魔改造

ja:
  activerecord:
    attributes:
      patrol:
        id:
          title: 'ID'
          note: '通し番号です'

Tooltipを使ってtitleにマウスオーバーしたらnoteが表示されるようにして書き込んでいた。Railsを再起動したら青ざめることになった。

[DEPRECATION WARNING] Nested I18n namespace lookup under "activerecord.attributes.patrol" is no longer supported

[http://dev.mensfeld.pl/2011/08/rails-3-1-deprecation-warning-nested-i18n-namespace-lookup-is-no-longer-supported/:title=Rails 3.1 [DEPRECATION WARNING] Nested I18n namespace lookup is no longer supported]を参考にしてみる
 
魔改造

ja:
  activerecord:
    attributes:
      patrol:
        "id/title": 'ID'
        "id/note": '通し番号です'

viewsのhtml.erbではこんな感じで呼び出せる

<%= t("activerecord.attributes.patrol.id/title") %><%= t("activerecord.attributes.patrol.id/note") %>


だらだらと記述して感じるのは「入力が増えて、読みづらくて汚いなー」
 
修正してみる
魔改造

ja:
  activerecord:
    attributes:
      patrol:
        id: 'ID'
    notes:
      patrol:
        id: '通し番号です'

viewsのhtml.erbではこんな感じで呼び出せる

<%= t("activerecord.attributes.patrol.id") %><%= t("activerecord.notes.patrol.id") %>

YAMLをフォームでタイトルと説明文を記述するときに使う方法

フォームに入力してもらうときに、口頭や文章で説明するのが面倒なので勝手に理解してもらうためにツールチップで表現したい。
 
先ほどのyamlをもうちょっと入力する。

ja:
  activerecord:
    attributes:
      patrol:
        id: 'ID'
        staff_id: 'スタッフ'
        place: '場所'
    notes:
      patrol:
        id: '通し番号です'
        staff_id: '確認したスタッフを選択してください'
        place: '問題があった場所を選択してください'

views/patrols/_form.html.erb

<% yml = "patrol" %>

<%== tooltip(1, yml, "staff_id") %>
<%= f.select(:staff_id, スタッフ配列) %>

 
ヘルパーでツールチップを作っちゃう。
helpers/appliication_helper.rb

  def tooltip(flag, yml, param, content="note")
    rtn = "<div class='tooltip'>"
    rtn += "<span class='star'>*</span>" if flag == 1
    rtn +=  t("activerecord.attributes."+yml+"."+param)
    rtn += "<span class='tip'>" 
    case content
      when "attr"
        rtn += t("activerecord.attributes."+yml+"."+param)
      when "note"
        rtn += t("activerecord.notes."+yml+"."+param)
      when "result"
        rtn += t("activerecord.results."+yml+"."+param)
      else
        rtn += ""
    end 
    rtn += "</span></div>"
    return rtn
  end

 
assets/stylesheets/main.css.scss

/*--- ツールチップ ---*/
.tooltip{position:relative; text-align:center;}
.tooltip:hover{z-index:10; color:#000;}
.tooltip span.tip{z-index:30; display:none; text-align:left;}
div.tooltip:hover span.tip{z-index:20; display:block; position:absolute; top:12px; left:24px; width:240px; border:1px solid #555; background-color:#fff; padding: 4px; color:#505050;}