@Konboi memo

主に技術に関してつらつらと。

Schemaのハッシュリファレンスをテンプレートに渡す。

現在フォーム画面を作成中

そこで、DBへの保存には県名ではなく県コードを保存することになった。

県コードとは

これ

当たり前だがユーザーへの表示部分はきちんと県名で表示しなくてはいけない。
表示の時にはまったのでメモしておく。

自分が開発している環境は
WAF:Ark
DB:DBIx
Template:Xslate

県名と県コードのハッシュリファレンスはSchemaに保存してある。

Schmea/Sample.pm

package Project::Schema::Sample;

...

our $PREFECTURE_CODE = {
    1  => '北海道', 2  => '青森県', 3  => '岩手県', 4  => '宮城県', 5  => '秋田県',
    6  => '山形県', 7  => '福島県', 8  => '茨城県', 9  => '栃木県', 10 => '群馬県',
    11 => '埼玉県', 12 => '千葉県', 13 => '東京都', 14 => '神奈川県', 15 => '新潟県',
    16 => '富山県', 17 => '石川県', 18 => '福井県', 19 => '山梨県', 20 => '長野県',
    21 => '岐阜県', 22 => '静岡県', 23 => '愛知県', 24 => '三重県', 25 => '滋賀県',
    26 => '京都府', 27 => '大阪府', 28 => '兵庫県', 29 => '奈良県', 30 => '和歌山県',
    31 => '鳥取県', 32 => '島根県', 33 => '岡山県', 34 => '広島県', 35 => '山口県',
    36 => '徳島県', 37 => '香川県', 38 => '愛媛県', 39 => '高知県', 40 => '福岡県',
    41 => '佐賀県',  42 => '長崎県', 43 => '熊本県', 44 => '大分県', 45 => '宮崎県',
    46 => '鹿児島県', 47 => '沖縄県', 
};

...

このようにSchemaに県コードを保存しておく。

Controleer側

package Project::Controller::Sample;

...

my $c->stash->{prefecture_code} = $Project::Schema::Sample::PREFECTURE_CODE;

...

こうして、ハッシュリファレンスを持ってテンプレートに渡す

template

...

<p>[% prefecture_code.item(2) %]</p> <!-- 青森県 -->

...

こんな感じで表示できた。
県コードを引けるようになった。

次からははまらない....はず。