2011-11-10 12 views
2

に別のcollection_selectからは自動私がしようとしている人々のHello Railsの3

を選択した項目に基づいてtext_fieldsを投入、これを考え出したが、私はまだそれを行うことはできません。

私はレール3アプリを持っています。私は請求書と支払いを手掛けています。支払いのためのフォームでは、私はすべての請求書番号(postgresデータベースから抽出)を表示するcollection_selectを持っています。私がしようとしているのは、請求書を選択したときに、他人text_fields(プロバイダ、住所など)同じ形式でページをリロードします。

私はアヤックス、JS、jqueryのを使用する必要があります知っているが、私はこれらの言語の初心者ですので、私は方法や場所

は、あなたが私を助けることを願って起動するのか分からない...おかげ

答えて

3

あなたがしたいことは、ajax呼び出しをコントローラにルーティングすることです。コントローラは、情報を含むjsonで応答します。 jqueryを使用してさまざまなフィールドに値を設定します。あなたのinvoice_controllerで

get "invoice/:id/get_json", :controller=>"invoice", :action=>"get_json" 

def get_json 
    invoice = Invoice.find(params[:invoice_id]) 
    render :text => invoice.to_json 
end 

請求書のモデルでは(デフォルトのto_jsonをする方法がsufficentされていない場合):あなたのルートで

def to_json 
    json = "{" 
    json += "id:'#{self.id}'" 
    json += ",date_created:'#{self.date}'" 
    ...  //add other data you want to have here later 
    json += "}" 
end 

あなたjavascriptファイル

$("#invoice_selecter").change(function(){ //calls this function when the selected value changes 
    $.get("/invoice/"+$(this).val()+"/get_json",function(data, status, xhr){ //does ajax call to the invoice route we set up above 
    data = eval(data); //turn the response text into a javascript object 
    $("#field_1").val(data.date_created); //sets the value of the fields to the data returned 
    ... 
    }); 
}); 

あなたはおそらくいくつかの問題に遭遇するでしょう、私は非常にあなたがGoogleのchrome ..でない場合は、火災のバグをダウンロードしてインストールすることをお勧めしますし、もしあなたが開発ツールを使用していることを確認します。右クリックしてinspect要素を押すことでそれらを開くことができると信じています。これにより、ajaxリクエストと、それが成功したかどうか、そして何かを監視することができます。

+0

あなたが4年前に書いたコードを見て、あなたがしていたことでちょうど恐ろしいでしょうか? – BananaNeil

関連する問題