Railsで画面を遷移せずにデータを書き換える
「Railsレシピ」を読みながら試してみます。
script.aculo.usのInPlaceEditorを使うので、RailsというよりもJavascriptのノウハウですが、Railsには最初からヘルパーが用意されているのでJavascript書く必要はないよ、ということみたい。
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以上ならばテキストエリアが表示されます。
さらにRailsでは、POSTを受け取るコントローラのアクションも簡単に用意できます。
in_place_edit_for :diary, :title
in_place_edit_for :diary, :text
これをコントローラに追加するだけ。他には何もする必要がありません。便利だなあ。正直、プログラミングしている気にはなりませんが……。