2012-02-19 13 views
0

私はjavascript/coffeescript/jQueryを使い慣れていますが、私のRailsアプリケーションでは以下を実装したいと考えています。これを実現するにはどうすればよいですか?Railsはjavascriptのルックアップの詳細とページへの投稿

  • フォームのテキストフィールドを編集すると、関数が呼び出され、テーブルの値を検索し、その値をページのdivに返します。

テキストフィールドはpersonNumberのIDを持っていると私はそれがPeopleテーブル内の値のために関連した名前を検索し、ID persondetailsでのdivにページにそれを投稿したいです。

$ -> $("#personNumber").focusout(show_message) 
show_message = -> $("#persondetails").html("Name will go here"); 

答えて

1

あなたはちょうどあなたがすでに持っているものにa bit of AJAXを追加する必要があります。

$ -> 
    $('#personNumber').focusout(show_message) 
    show_message = -> 
     id = encodeURIComponent($('#personNumber').val()) 
     $.ajax 
      url: '/path/to/your/controller/' + id + '/name' 
      type: 'get' 
      success: (data) -> 
       $('#persondetails').html(data.name) 
      error: -> 
       # Do something sensible 

その後、ソートのこのようなコントローラメソッドへのルート/path/to/your/controller/:id/nameたい:

def your_method 
    #... look up params[:id] and leave the person in `person` 
    if(person) 
     render :json => { :name => person.name }, :status => :ok 
    else 
     render :json => { :msg => 'some error message' }, :status => :not_found 
    end 
end 

あなたの場合ID以外のものに基づいて名前を検索できるようにしたい場合は、次のような柔軟性を追加することができます:

そして
$ -> 
    $('#personNumber').focusout(show_message) 
    show_message = -> 
     $.ajax 
      url: '/path/to/your/controller' 
      type: 'get' 
      data: { id: $('#personNumber').val() } 
      success: (data) -> 
       $('#persondetails').html(data.name) 
      error: -> 
       # Do something sensible 

上記のように制御方法へのルート/path/to/your/controllerparamsかもしれない他のものに基づいてpersonを見つけることができるようにyour_methodにもう少しロジックを追加します。

「読み込み中...」というメッセージも追加するとよいでしょう。 $.ajaxを呼び出す前に「読み込み中...」<div>と表示し、$.ajaxからcompleteコールバックに非表示にすることができます。

+0

ありがとうございました。 – Jack

関連する問題