Railsで画面を遷移せずにデータを書き換える

Tsukasa OISHI

  「Railsレシピ」を読みながら試してみます。
 script.aculo.usのInPlaceEditorを使うので、RailsというよりもJavascriptのノウハウですが、Railsには最初からヘルパーが用意されているのでJavascript書く必要はないよ、ということみたい。
Large

 viewのとあるページで以下のように表示していたとすると

<%= h diary.title %>
<%= h diary.text %>

 InPlaceEditorのヘルパーを使って以下のように書き直します。

<%= in_place_editor_field :diary, :title %>
<%= in_place_editor_field :diary, :text, {}, :rows => 10 %>

 引数は、インスタンス名、インスタンス変数、 オプション、 行数の順です。rowsを1にしていると(デフォルト)、クリックしたときにテキストフィールドが表示されますが、2以上ならばテキストエリアが表示されます。
Large

 さらにRailsでは、POSTを受け取るコントローラのアクションも簡単に用意できます。

  in_place_edit_for :diary, :title
  in_place_edit_for :diary, :text

 これをコントローラに追加するだけ。他には何もする必要がありません。便利だなあ。正直、プログラミングしている気にはなりませんが……。