formtasticを使ってみた。

ruby-toolboxの"Rails FormBuilders"部門の一番人気formtasticを使ってみた。

step1 インストール

formtasticのインストール方法は簡単

gem install justinfrench-formtastic

とgemをインストールしたあと、

config.gem "justinfrench-formtastic", 
  :lib     => 'formtastic', 
  :source  => 'http://gems.github.com'

config/enviroment.rbに追加すればOK。


このformtasticは"semantic_form_for"というメソッドを追加してくれる。
これは手でformを作っていくときに非常に頼りになるメソッドだ。


準備としてモデルを作り

ruby script/generate  model test string:string date:date datetime:datetime integer:integer boolean:boolean

そしてroutes.rbに

  map.resources :tests

を追加する。

コントローラーを作り

ruby script/generate controller test test1 

書き換える。

class TestController < ApplicationController
  def test1
    @test = Test.new
  end
end

view

semantic_form_for
<% semantic_form_for @test do  | f |%>
  <%= f.inputs %>
<% end -%>

このコードだけで以下のようなviewが生成される。
f:id:yuuki-n:20090901081717p:image

formtasticはl18nにも対応しているから日本語化をしてみよう。
local fileの生成は
i18n_generatorsを使って生成してみるよ。

 sudo gem install amatsuda-i18n_generators

でインストール後 RailsRootで

ruby script/generate i18n ja 

とやろう。
いろいろなファイルを自動で生成してくれる。

translation_ja.yml

ja: 
  activerecord: 
    models: 
      test: "試験"  #g
    attributes: 
      test: 
        string: "文字列"  #g
        date: "日付"  #g
        datetime: "日時"  #g
        integer: "整数"  #g
        boolean: "ブール"  #g

なんて感じになっているからブラウザをリロードしてみよう。
きっとこんな画面になっているはずだ。
f:id:yuuki-n:20090901084852p:image

もちろん、attributesの一部だけを出力することも可能だよ。

semantic_form_for
<% semantic_form_for @test do  | f |%>
  inputs
  <%= f.inputs :datetime, :string %>
  input
  <%= f.input :integer %>
<% end -%>

f:id:yuuki-n:20090921230256p:image
Formtasticはもっといろいろな機能があって、アプリケーションの開発を確実に楽にすると思うよ。