2016-07-12 10 views
0

私はAJAXの新人です。チャットメッセージボックスから実際のチャットボックスとレールメソッドの2つの場所にデータを送信しようとしています。そうすれば私はmeesageを表示することができ、私のDBにメッセージを保存することもできます。AJAXデータをコントローラに送信する際に、Railsで問題が発生する

私は、次のJS/HTMLコード

<button onclick="myFunction()" name="submitmsg" type="submit" id="submitmsg" value="Send">Try it</button> 

<script> 
    function myFunction() { 
     var x = document.getElementById("frm1"); 
     console.log(x); 
     var text = ""; 
     var i; 
     for (i = 0; i < x.length ;i++) { 
      text += x.elements[i].value + "<br>"; 
     } 
     document.getElementById("chatbox").innerHTML += text; 

     $.ajax({ 
      url : "/messages/create", 
      type : "post", 
      data : { data_value: x } 
      dataType : "text" //this might be wrong? 
     }); 

    } 
</script> 

を持っている私は正常にHTML DOMに挿入することができますが、それは、メッセージコントローラcreateアクションにデータを送信していません。私のメッセージコントローラの名前はmesssages_controller.rbで、アクションはcreateです。

私はその後、paramsが何であるかを見るために私のcreateアクションでdebuggerを追加しましたが、それもコードを実行することはありません。

いくつかのルート:

messages GET /messages(.:format)   messages#index 
      POST /messages(.:format)   messages#create 
    new_message GET /messages/new(.:format)  messages#new 
    edit_message GET /messages/:id/edit(.:format) messages#edit 
     message GET /messages/:id(.:format)  messages#show 
       PATCH /messages/:id(.:format)  messages#update 
       PUT /messages/:id(.:format)  messages#update 
       DELETE /messages/:id(.:format)  messages#destroy 

UPDATE

待ち時間は、何かが私のJSコードに問題があります。以前はHTMLをDOMに挿入していましたが、調整の途中で停止しました。コンソールはエラーnew:110 Uncaught SyntaxError: Unexpected identifierを投げています。110行目がコメントアウトされています。

私が.ajaxを呼び出すと、正常に機能します。私はあなたのcreate方法でmyFunction()

+0

定義したルートはありますか?あなたのコントローラに 'create'メソッドのコードを追加できますか? – Kumar

+0

あなたの推測で正しいです、 'dataType'は' json'でなければなりません。 –

+0

@ニックニロフ問題を解決しませんでした。 'create'アクションに' debugger'を置くと、デバッガがコンソールに開かれるはずです。私はルートを追加しました –

答えて

1
$.ajax({ 
    url : "/messages", //by rails convention doing a post simply to '/messages' should be handled by create action 
    method : "post", 
    data : { data_value: x }, 
    dataType : "json", //this might be wrong? 
    success: function(response){ 
    //do something,maybe notify user successfully posted their message 
    }, 
    error: function(error){ 
    console.log(error); 
    } 
}); 

内部.ajax関数を呼び出すとき、私はあなたがjson要求

def create 
    //save message 
    @message.save! 
    respond_to do |format| 
    format.json { json: @message.as_json } 
    end 
end 

これはあなたのコードは次のようになります方法ですが処理すべき構文的に間違った何かを持っています。あなたはいつでもより創造的に行動することができます。

ご確認くださいgist

+0

'create'はまだ実行されていません - ' debug'を 'create'アクションの最初の行に入れて確認します –

+0

' url: "/ messages"変更を受け取りましたか? –

+0

はい、更新を確認してください。私のJSコードでは何かが間違っています。申し訳ありませんが、ここでマルチタスキングしようとしています...私はいくつかのことを試してみましょう –

関連する問題