2017-08-17 105 views
1

我是jQuery/Javascript的新手,並且遇到了與機器人實現聊天室的麻煩。我特別被卡在控制器和JS的溝通上。如何在帖子後更改軌道控制器的視圖?

基本功能:

  1. 用戶類型的註釋
  2. 的Javascript發送到後導軌與評論數據控制器
  3. Ruby類(@bot)主罰評論和返回響應
  4. 得到迴應加到視圖

    這是我到目前爲止

控制器

class MainPageController < ApplicationController 
    def chat 
    @username = params[:username] 
    @bot = JibunBots.new(@username, Message.where(:username => @username).first.message) 
    respond_to |post| do 
     return @bot.conversation(post.data) 
    end 
    end 
end 

的Javascript

$(document).ready(function() { 

$("#submitmsg").click(function(){ 

    var clientmsg = $("#usermsg").val(); 
    $('<p>' + gon.username + ": " + clientmsg + '</p><br>').appendTo('#chatbox'); 
    $("#usermsg").attr("value", ""); 
    #SEND POST HERE? 
    #RECEIVE DATA FROM CONTROLLER? 
    #ADD NEW COMMENT HERE? 
    }); 
    }) 
+2

如果你正在創建一個聊天系統,我建議你研究服務器端事件或WebSockets。不要使用AJAX輪詢,因爲我確信有人會很快建議它。 –

+2

這個AJAX選項沒有問題。這真的取決於你的需求:你真的需要實時聊天嗎?或者如果每30秒更新一次就可以嗎? – MrYoshiji

+0

@MrYoshiji如果需要20 - 30秒 – Quinty

回答

1

你有基本結構的想法是正確的。你只需要發送一個post請求到你在routes.rb中創建的與你的控制器相關的路由,並返回一個json對象和你保存的消息。

jQuery.ajax({ 
    url: "/chat/create", // a route in routes.rb for your controller 
    type: "POST", 
    data: {comment: submitted_comment , user_id: user_id }, // place to send data to your controller 
    dataType: "json" 
    success: function(data){ 
    // data will be the response object(json) 
    // use data to create new chat object using a template of some sort 
    } 
}); 
相關問題