2017-11-01 8 views
2

Ruby on Railsで構築されたフォームからSQL Serverデータベースにデータを挿入しようとしています。私はデータベースを正しく接続し、そこからデータを引き出すことができます。私は今、それにポストバックしようとしています。フォームのデータをデータベースのテーブルの正しい列に取得する方法を理解する上で助けが必要です。Railsアプリケーションから外部データベースへの投稿

私のAJAX:

<script> 
$('#Favorites').on('submit',function(event){ 
    var $form = $(this), 
    data = $form.serialize(); 
    var url = 'http://localhost:3000/welcome/insert'; 
    $.ajax({ 
        type: 'POST', 
        url: url, 
        data: data, 
        success: function(){ 
             
      alert('Your form has been successfully submitted!'); 
      document.getElementById('Favorites').reset(); 
      window.location.reload(); 
        }, 
        fail:function(){ 
            alert('something went wrong...try again'); 
        } 
    }); 
return false; 
}); 

</script> 

私のコントローラ機能:

def insert 
    @ipinsert=Ipdw.connection.execute("insert into [DB_Test02].[dbo].[My_Table] (Report_Name,Report_Link) 
    values ('I am cool','www.google.com')") 
    end 

は現在、私はちょうど私がテーブルに挿入することができますし、私ができることを確認するために、ここでダミーのinsert文を持っています。コントローラに送られたフォームの値をどのように打ち破るかと、それらの値を入れるためにどのようなテーブルとカラムをRailsに伝えるかを知る必要があります。 fieledあなたは、フォームの隠しフィールドでこれを指定することができ、あなたのDBサーバーに追加するテーブルの問題については

答えて

1

レールはformat the data for youです。このようなコントローラでは:

{'Report_Name': 'some name', 'Report_link': 'www.example.com'} 

paramsでアクセスできます。

SQLクエリの手動実行のために、データを正しくフォーマットするようになりました。

insert_values = "('%s', '%s')" % params['Report_Name'], params['Report_link'] 
@ipinsert=Ipdw.connection.execute("insert into [DB_Test02].[dbo].[My_Table] (Report_Name,Report_Link) values #{insert_values}") 
0

、すべてはあなたが$form.serialize();を言うとき、それはFirstName=Amr&SecondName=Adelのようなものにし、その場所FirstNameにそれを回す、名前を持つ必要がありますフィールドの名前で、Amrはフィールドの値です。次に、このシリアル化を{"data": $form.serialize()}のようなJSON形式のフォームに入れ、投稿リクエストにdataType: "JSON"を追加します。Insert関数では、params[:data]で取得できます&['FirstName=Amr','SecondName=Adel']のようになり、すべての要素は=で分割されますので、[['FirstName','Amr'], ['SecondName','Adel']]のようなものが得られます。

これが役に立ちます。

関連する問題