Objectクラスに付属しているsendメソッドは、引数に文字列かシンボルを与えてやると同名のメソッドを引っ張り出してくれる凄い子です。
%w(pop push slice).send(:to_s) #=> "[\"pop\", \"push\", \"slice\"]"
引数つきで実行する事も当然可能です。
%w(pop push slice).each {|i| p %w(a b c d).send(i,1) } #=> ["d"] #=> ["a", "b", "c", "d", 1] #=> "b"
Railsであれば、Helperに
def choose_action(item, key) case item.class when String text_field :fund, key when Date date_field :fund, key when Fixnum number_field :fund, key else text_field :fund, key end end
とやっておいて、Viewの中で
<%= choose_action(@hoge.send(key).class, key) %> | <%= @hoge.send(key) %>
とやっておけば種類に合わせたフォームと記録済みの内容を吐き出す事が出来ます。
コードも短くなるし動的に増減に対応できるしで一石二鳥ですね。