8日目のプログラム エラーの原因判明
8日目のプログラムはフォトブログの作成。これは今後作るであろうWebアプリの原型に使えそうなので
ぜひとも動かしたいところ。「10…新規登録プログラム」まで順調に行ったが、下記のエラーが出てしまい
先に進めず。。
SyntaxError in Item#new
Showing app/views/item/_restaurant.rhtml where line #18 raised:compile error
./script/../config/../app/views/item/_restaurant.rhtml:18: parse error, unexpected $undefined., expecting ')'
"$('restaurant_form').innerHTML = ";$('select_restaurant').style.display(この後もエラー情報が続く)
_restaurant.rhtml の18行目付近がおかしいとのこと。
その内容は下記の通り。
修正前
18 <%= link_to_function _('select'),
19 "$('restaurant_form').innerHTML = ";$('select_restaurant').style.display
20 ='inline';$('new_restaurant').style.display = 'none'" %>
(_restaurant.rhtmlのサンプルは、本には285ページと295ページに書かれている。
その二つはまさにこの場所に差があるがどちらでやってもエラーが出る。
上記は295ページを参考にした。)
とりあえず、わからないので、今回のプロジェクトで書いたサンプルすべてを見直したが
変化せず。
(厳密には2,3箇所タイプミスがあった。しかしこのエラーには影響しなかった。)
先輩からは
「エラーの原因は、エラーメッセージの周辺が影響していると思ったほうがいい」
とアドバイスをもらったので、もう一度 _restaurant.rhtml を見直す。
ん? " が奇数個??
一つ削ってみたらエラーが変化。
お?なんか影響しそう。
今度は下記のように足してみた。
修正後
18 <%= link_to_function _('select'),
19 "$('restaurant_form').innerHTML = ";"$('select_restaurant').style.display
20 ='inline';$('new_restaurant').style.display = 'none'" %>
お!通った!
すべての情報を入力してもCreateできないのでほかの場所にまだ問題はあるかもしれないが
ドロップダウンリストはちゃんと増えていくのでこの場所は大丈夫そう。
このあとCD-ROMのサンプルを見てみると
18 <%= link_to_function _('select'),
19 "$('restaurant_form').innerHTML = '';$('select_restaurant').style.display
20 ='inline';$('new_restaurant').style.display = 'none'"%>
と書かれていた。
ようは、" ではなく''だった。
たしかに本を改めてみると、点々の記載に差があった。
ん〜。なるほど。渋い。。
プログラムを打つのに慣れてくるとこういうのは普通に気づくんだろうな。
まだまだだな。