RadioボタンでException
普通にRails上で書いたradioボタンをExt化しようとしたら,いろいろ問題がでてはまったのでメモ.
まずは普通にRailsでradioボタンを準備
<%= radio_button(:user, :sex, 1) %><label for="user_sex_1">男</label> <%= radio_button(:user, :sex, 2) %><label for="user_sex_2">女</label>
この二つの要素をExt化したいとなると,多分下みたいな感じ.
var user_sex_1 = new Ext.form.Radio({applyTo:'user_sex_1'}); var user_sex_2 = new Ext.form.Radio({applyTo:'user_sex_2'});
まずこの状態でやってみると下記例外が発生.
[Exception... "'Error parsing selector, parsing failed at "]"' when calling method: [nsIDOMEventListener::handleEvent]" nsresult: "0x8057001e (NS_ERROR_XPC_JS_THREW_STRING)" location: "<unknown>" data: no] http://localhost:3000/javascripts/lib/ext-2.2/ext-all-debug.js?1217843684 Line 1689
これを見る限りでは,なんらかの要素に"["が入ってるからパースエラーだ馬鹿野郎と怒られてるみたいだ.
たしかに上のビューで書き出されるnameは"user[sex]"になる.
"["なんてのはnameくらいにしか入らないので,これを修正.
で,controllerかmodel側でごにょごにょしてあげるってことで以下のようにビュー側を変更
<%= radio_button(:user, :sex, 1, {:name => 'user_sex'}) %><label for="user_sex_1">男</label> <%= radio_button(:user, :sex, 2 {:name => 'user_sex'}) %><label for="user_sex_2">女</label>
そうするとhtmlは
<input id="user_sex_1" type="radio" name="user_sex" value="1" /><label for="user_sex_1">男</label> <input id="user_sex_2" type="radio" name="user_sex" value="2" /><label for="user_sex_2">女</label>
これでいけるだろうと思ってやってみると,まぁ表示は普通にできてる,けど要素をクリックすると,以下のエラー.
Ext.getCmp(el.dom.id) is undefined http://localhost:3000/javascripts/lib/ext-2.2/ext-all-debug.js?1217843684 Line 28353
あれ,コンポーネントとして認識していない?
で,結果として自分の勘違いなのかなんなのか分からないけど,以下のように書かないといけないとコンポーネントとして認識してくれないみたいだった.
var user_sex_1 = new Ext.form.Radio({applyTo:'user_sex_1', id:'user_sex_1'}); var user_sex_2 = new Ext.form.Radio({applyTo:'user_sex_2', id:'user_sex_2'});
つまり,applyToだけでは一応Extオブジェクトとしては作るけど,idを指定しないとコンポーネントとしては登録しないよ,みたいな感じ.
他のTextFieldとかはapplyToだけでコンポーネントとして取れてたようなイメージがあったから,ちょっとはまってしまった.
試してみたら,id指定してないとTextFieldであってもEct.getCmpではコンポーネントとして取れないな…orz
にしてもそういう仕様だとしたら,コンポーネントをつくるときのidとhtml中のidは別っていうことか.
ちゃんと把握してないと混乱してしまいそうだなぁ.aliasとかkeyとかなんか別の名前がよかったな.
とりあえず,idを埋め込む簡単なお仕事を誰かに振るとしよう:-)
ヘッダーのロゴ変更
先日Macをクリーンインストールする羽目になったので,Tracなどをローカルにインストールした.
その際以前はTrac標準のロゴ画像が表示されていたはずだけどバージョンアップに伴ってか,デフォルトでは表示されなくなっていた.
なので,とりあえず適当にロゴを設定する方法.
まず,Tracを準備する
$ mkdir project $ trac-admin project initenv reating a new Trac environment at /www/tracs/project Trac will first ask a few questions about your environment in order to initialize and prepare the project database. Please enter the name of your project. This name will be used in page titles and descriptions. Project Name [My Project]> project ... --------------------------------------------------------------------- Project environment for 'project' created. You may now configure the environment by editing the file: /www/tracs/project/conf/trac.ini If you'd like to take this new project environment for a test drive, try running the Trac standalone web server `tracd`: tracd --port 8000 /www/tracs/project Then point your browser to http://localhost:8000/project. There you can also browse the documentation for your installed version of Trac, including information on further setup (such as deploying Trac to a real web server). The latest documentation can also always be found on the project website: http://trac.edgewall.org/ Congratulations!
てな感じで準備したら,trac.iniで画像を設定してね.と書いてある.
ので,設定してみる.
$ cd project $ vi conf/trac.ini
でtrac.iniを開いたら,以下の箇所にロゴ画像のパスを設定
[header_logo] alt = (please configure the [header_logo] section in trac.ini) height = -1 link = src = site/your_project_logo.png # <- ここを編集 width = -1
上の"your_project_logo.png"を任意の画像名に変更して,先ほど作ったTracのディレクトリの"htdocs"に指定した画像ファイルを置いたらできあがり.
GoogleCodeの問題はバグみたいだ
http://groups.google.com/group/google-code-hosting/browse_thread/thread/919ab5197b1439dd#
を見る限りではやっぱり数字で始まるプロジェクトのルーティングに不具合があるらしい…いつ直るんだろうか…
今更ながら使ってみる
今まで開発やってきて使ってないってのも変な話だけど,これまでは基本的にeclipse上でいろいろ開発をやっていた.確かに現在最も広がっている(と思われる)IDEなだけに,使いやすい.けどやっぱり重かったり,プラグインによってはうまく動いてくれなかったり,バージョンアップの度にいろいろ悩まされるのも,ちょっと面倒くさくなってきたので,先日id:akmさんから聞いたので,この際Emacsを使っていこうと思った.
というわけでちょっと覚えたコマンド類をメモ
ファイルとかウィンドウとか系
- C-x C-f
- ファイルオープン TABキーでパスの補完
- C-x C-s
- ファイルの保存
- C-x C-b
- バッファ一覧を新しいwindowで開く
- C-x b
- バッファ間の移動
- C-x o
- 分割されたwindow間の移動
- C-x 0
- 現在カーソルのあるwindowを閉じる
- C-x 1
- 現在カーソルのあるwindow以外を閉じる
- C-x 2
- カーソルのあるwindowを縦に分割
- C-x 3
- カーソルのあるwindowを横に分割
無事終了
8/9に1000speakers:6@Kyusyuというイベントがあったので,話す人で参加してきました.
普段発表することがほとんどない状況なので,緊張しまくりの発表でしたが,まぁなんとか無事終わってよかった.内容としてはPHPのフレームワークのAkelosのちょっとした紹介みたいな内容でした.
というより発表直前にMacbookが固まったりで,大丈夫かいなとも思いましたが,なんとか発表中は固まることがなかったのでよかった.終わってからネット見たりしてるときに固まりまくりだったけど.
とにもかくにも無事開催できて,終了できたのでよかったなぁと.今度は福岡で開催するような話もあったので,そのときは聞く人で参加して楽しもうと思います.
関係者の皆様お疲れさまでしたー