2010年12月21日火曜日

auto completion for rails3 using prototype.js as backend 訂正!

前回の記事「auto completion for rails3 using prototype.js as backend」であまりにもアホなミスをやらかしていたので改訂版です…。

まず、前回の記事ではせっかくダウンロードしたライブラリを有効にしていませんでした。別の部分のデバッグをしようと思ってFirefoxのFireBugを起動したところ「Autocomplete?なにそれ?」と言われて初めて気が付いたという生き恥です…。

真のAutocompleteはこちら!><





layout:
<%= javascript_include_tag "autocomplete" %>

まずこれをやってなかった。 :defaults じゃダメだよね。当たり前だよね。

show.html.erb:
<script type="text/javascript">
  new Autocomplete('form_name', {
          serviceUrl:'<%= forms_autocomplete_path %>',
          width:200,
      });
</script>

form_name を対象に forms_autocomplete_path (今回は /forms_autocomplete(?query=:query) => FormsController#autocomplete)を張ってやるのは前回と一緒。width属性は追加してます。ただ、ルーティングするときにちょっとハマって、 /forms/autocomplete にするとうまく動いてくれなかった。もうちょっと頑張れば動かせたのかも知れないけどもう無理。

FormsController:
  def autocomplete
    @forms = Form.all
    respond_to do |format|
      format.json {
        render :text => {:query => params[:query], :suggestions => @forms.map{|form| form.name}}.to_json
      }
    end
  end


最後はこちら。推察を返す部分。ここでも酷いことに Form.allForms.all と前回は書いていて、そのまま運用していてもまったく気が付かなかった(実行されないのでエラーさえ吐かれない)というあんまりな状況になってました。泣きたいです。

でも今度こそやったからいいや。なんか別の機能のコミットとダブっちゃったけど許してくれ。人間なんだミスもするさ。

コーディングの才能ないかもって思ったら負けだと思ってる。

押してねっ→BlogPeople「趣味の世界」ブログランキング

2 件のコメント:

  1. おちゃめたんや・・・

    返信削除
  2. こんな性格がいざというときに足を引っ張らないことを願うばかり…

    返信削除