jq4rとjRails
jQuery.jsをRailsアプリで使いたい!という人向けのプラグイン2つを試したのでメモ。
jRailsについて
現在の最新バージョン0.3を試す。
link_to_remote等、Railsのprototype_helperとメソッド名が同じで、オーバーライドしている感じ。
jsファイルの読みこみも標準の書き方と同じ次の1行でいけるのでprototype.js + script.aculo.usからの乗り換えでもコードの書き換えが必要無い様にしてある。
<%= javascript_include_tag :defaults %>
以下、嵌った点。動かないって言っているの俺だけだったらどうしよう、、、
visual_effectが動かない
RJSでvisual_effectを使ってみたのですが全く動作しません、、、、なんなんでしょう、結局jRails.rbに手を加えて動く様にしました。
生成されるjavascriptコードが公式サイトのVisual Effectsデモと全然違っています。
jq4rについて
2008/03/31時点のtrunkをcheckoutしたものを使用。
メソッド名は jquery_visual_effect みたいに頭に[jquery_]がついた形になっている。
以下、嵌った点。
rjsの結果を受け取る場合はコールバックの指定が必要
こんな感じにevaluate_remote_responseを指定しておかないと、rjsのレスポンスが実行されません。
<%= jquery_link_to_remote "<img src=\"../images/edit.png\" class=\"edit_ico\"/>", :url => {:action=>:edit, :id=>b.id}, :before => "funcCommon.startAjaxAnimation('#"+elemId+" .edit_ico')", :success => "funcCommon.endAjaxAnimation('#"+elemId+"')", :complete => evaluate_remote_response, :failure => "funcCommon.alertAjaxError()" %>
逆にjRailsでこの書き方だとrjsのレスポンスが2回実行されるので注意。
jquery_link_to_remoteの:methodオプションが効かない
実装されていないっぽいです。常にGETになります。
jquery_link_to_remoteの:submitオプションが効かない
実装されていないっぽいです。
jquery_visual_effectはcallbackの指定が必須
こんな風に書いておかないと動かない模様。
html.jquery_visual_effect :fade_in, "対象id", {:function=>:success}
jq4r, jRails両方に言えること
メソッドのパラメータはDOM要素のidだったり、"#"+idを渡さないといけなかったり所によってまちまち。ただ、idだけをパラメータとして渡す箇所でも次のような文字列を渡してもOKです。
- id + " .クラス名"
- id + " > タグ名"
この辺はjQueryならではですね、範囲指定が柔軟にできて嬉しいですよ。
終わり
すごい間違えたことを書いている可能性があるので、気づいた事があればdisってください。