ajax なナニ

昨晩の作業について覚え書きを。
機能としては以下。

  • link_to_function と Effect.Appear のセットな文字列の更新処理
  • Effect.Appear で出てくる form でテキスト入力して更新
  • 更新後には表示文字列も置き換えたい

で、更新処理までは OK なんですが更新後の表示文字列の書き換えが上手くいってなかったとゆーか書き換えられてなかった。んで、ちょっと調べて実装してみたのが_form_remote_tag での画面更新_というエントリ。
これで済んでりゃシアワセだったのですが、更新後にハイパーリンクじゃなくなっていたんですね。render :text してるんで当たり前と言えば当たり前。

対処

仕方ないので一連の部品 (link_to_remote から end_form_tag まで) を切り出して render :partial な処理にすればなんとかなるだろう、と勝手読みをして実装試験。何をどう直したか、というと。

  • コントローラ側では、更新処理に成功したら切り出した rhtml を render :partial する
  • view 側では、切り出した rhtml を render :partial している箇所を で囲み、id を付けた
  • 切り出した rhtml では form_remote_tag の :update オプションで上記 id を指定

実装試験中、色々な事を試した挙句に上記の解に辿りついたのですが、それまでの動作がとても面白かった。きちんと理解できてれば一発で解に (以下略) なのでしょう。しかも上記について意味合いをきちんと解説できない駄目っぷりが光ります。