Renderiza una vista en Rails vía AJAX y controlador

Tengo este código JS en mi application.js:

$(document).ready(function(){ var kraken_btc_eur_old = 0; setInterval(function(){ $.get('https://api.kraken.com/0/public/Ticker?pair=XXBTZEUR', function(data){ var kraken_btc_eur = data.result.XXBTZEUR.c[0]; kraken_btc_eur_old = kraken_btc_eur; $(".kraken_btc_eur").text(kraken_btc_eur); }); $.ajax({ type: "POST", url: "/bets", data: { parameter: kraken_btc_eur_old }, success: function (data) { } }); }, 10000); }); 

Hasta ahora todo bien, cada 10 segundos la página muestra el nuevo valor extraído de la API y lo coloca en la clase correspondiente en el HTML sin ninguna actualización de la página. Mi problema es con la solicitud de AJAX. Puedo ver que en la consola de los Rails que cada 10 segundos la solicitud posterior realiza la acción de crear en mi controlador y que el código se ejecuta en consecuencia:

 def create @bet = Bet.new @bet.base_price = params["parameter"] @bet.save Bet.first.destroy @bets = Bet.all @bet_last = Bet.last #render :js => "window.location = '#{root_path}'" #redirect_to "index" #render :inline => "

" end

Sin embargo, no logro actualizar la vista html con los nuevos valores sin tener que actualizar la página. Debido a que cada 10 segundos se crean nuevas apuestas (AJAX), quiero que aparezcan automáticamente en la página sin ninguna actualización por hacer. Intenté renderizar de diferentes maneras en mi acción de crear, me di cuenta de que hay documentos creados en la consola de mi navegador en ressources -> XHR con el htm actualizado, pero no logro que se reemplace con el mostrado sin ninguna actualización.

Cuando está enviando una solicitud AJAX, Rails no podrá actualizar su vista. Eso es porque, como dijiste, no estás actualizando la página. Así que Rails no puede enviar el nuevo contenido HTML al navegador.

En ese caso, debe manejar la lógica de agregar una nueva Bet en la interfaz (Javascript).

Algo como:

 $.ajax({ type: "POST", url: "/bets", data: { parameter: kraken_btc_eur_old }, success: function (data) { var newBet = "
" + data.base_price + "
"; $('list_of_bets').append(newBet); } });

Y en el lado de los Rails, debe devolver la nueva Bet que acaba de crear como JSON:

 def create # your logic here render json: @bet end