2006.08.03

Ruby Rails

FireFoxとIEでは動かないAjax(Safariでは動いてた)

現在Railsでprototype.jsとeffects.js使ってAjaxの勉強中なのですが、数ヶ所Safariでは動いてたのにFireFoxとIEでは動かないところがあってちょっとはまった。

問題は単純で、

:url => { :action => "action_name" }

を指定しないとAjaxの通信が発生せず、:loadingも:completeも発生しないという点。

あたりまえっちゃああたりまえだけど、じゃあなぜSafariで動くのさ?

実際に動かなかったソースはこんな感じ。

<%=
link_to_remote "コメントする?", 
  {
  :complete => "Element.show('comment_body');
    Element.hide('loading');
    Element.hide('start_comment');
    Element.show('submit');",
  :loading => "Element.show('loading');"
  },
  :id => 'start_comment' 
%>
<%=
image_tag "indicator.gif", :id => "loading",
  :style => "display:none; margin-left:80px;"
%>
<%=
text_area 'comment', 'body',
 :style => 'display: none;'
%>
<div class="border"></div>

で、こうすると動く。

<%=
link_to_remote "コメントする?", 
  {
  :complete => "Element.show('comment_body');
    Element.hide('loading');
    Element.hide('start_comment');
    Element.show('submit');",
  :loading => "Element.show('loading');",
  :url => { :action => "donothing" }
  },
  :id => 'start_comment' 
%>
<%=
image_tag "indicator.gif", :id => "loading",
  :style => "display:none; margin-left:80px;"
%>
<%=
text_area 'comment', 'body',
 :style => 'display: none;'
%>
<div class="border"></div>

ちなみに

:url => { :action => "donothing" }

は、何も処理せず何も表示しないダミーアクション。
なんか超カッコ悪い。