Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 通过AJAX和控制器在rails中渲染视图_Javascript_Ruby On Rails_Ajax - Fatal编程技术网

Javascript 通过AJAX和控制器在rails中渲染视图

Javascript 通过AJAX和控制器在rails中渲染视图,javascript,ruby-on-rails,ajax,Javascript,Ruby On Rails,Ajax,我的application.JS中有以下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_

我的application.JS中有以下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);

    });
到目前为止,页面每10秒显示一次从API获取的新值,并将其放置到HTML中相应的类中,而无需任何页面刷新。 我的问题是AJAX请求。我可以看到,在rails控制台中,post请求每隔10秒就会在我的控制器中命中create操作,并且相应地执行代码:

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 => "<% @bets.each do |b| %><p><%= b.id %><p><% end %>"

  end
但是,在不刷新页面的情况下,我无法使用新值更新html视图。因为每10秒会创建一次新的赌注,所以我希望它们自动出现在页面中,而无需进行任何刷新。
我在创建操作中尝试了不同的渲染方式,我意识到在我的浏览器控制台中的ressources->XHR下创建了带有更新htm的文档,但我无法在没有任何刷新的情况下将其替换为显示的文档。

当您发送AJAX请求时,rails将无法更新您的视图。那是因为,正如你所说,你实际上并没有刷新页面。因此rails无法将新的HTML内容发送到浏览器

在这种情况下,您需要处理在前端Javascript中添加新赌注的逻辑

比如:

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

伙计,你不知道你帮我节省了多少时间。我已经尝试了两天这么多不同的代码。非常感谢!
def create
  # your logic here 
  render json: @bet
end