2011年9月26日月曜日

Rails controllerでviewのパーツを作り、表示する

中の人です。

引きずってます。
controllerでform_tagやlink_toなどの結果をviewに渡すには
どうするべきかを延々と考えていましたが、ある程度のパターンには
耐えられるちゃんとした方法です。
直前の記事の内容だと、ajaxとの相性最悪です。たぶん。

以降、jqgridのセルをajaxで塗り替えるには?ということで調べていた副産物です。
id付きのspanの中にform_tagを埋め込んで、hoge.jsのjQueryを
呼び出して塗り替えるなんて荒業もできなくは無いのですが
保留中・・・。すごく手間が掛かるから・・・・。

jqgridにもこれでいけるか・・・。挑戦中です。

内容

modelに(class_evalで)accessorで空の項目を追加、そこに
以下の結果を渡してjsonに含める。
value = render_to_string(:partial=>"hoge" , :object=>fuga)
jQuery、Ajax使わないなら、何も考えなくていいから楽だけど
Rails + Ajax(jRails仕様)にすると色々と混乱する。
まだ枯れてない技術だ・・・。

追記
ある程度上手くいったので更新。

  1. jqgridから呼ばれるcontrollerのmethodでrender_to_stringして
    link_to_remoteを含んだpartialを埋め込む。
  2. flashの表示領域をid="flash"としておき、link_to_remoteの更新領域として利用。
  3. リンクをクリックするとメソッドの(:layout=>falseにした)レンダリング結果が
    表示される。
form_remote_tagはテスト中





0 件のコメント:

コメントを投稿