0

以下のファイルは.html.erbにあります。何度も何度もマッシュを呼び出したいのですが、setIntervalを何度も試しましたが、データの古い値を取得しています。メッシュデータで新しい値を取得しています。それを呼び出すには古くなります。

    <%

        mash = {
          "id" => id, "legends" => legends, "x_units" => x_units, "y_units" => y_units, "data" => data, "alertPoints" => alert_points, "time_mode" => time_mode, 
          "colors" => colors, "x_label" => x_label, "y_label" => y_label, "tipColors" => tipColors, "dateformat" => @dateformat, "timeformat" => @timeformat, 
          "chart_url" => chart_url, "x_label_date_format" => x_label_date_format, "turn_series" => turn_series, "y_ticks_array" => y_ticks_array, "y_label_width" => y_label_width,
          "series_type" => series_type,"vertical_threshold" => vertical_threshold, "x_label_suffix" => x_label_suffix, "y_tick_on" => y_tick_on, "xmin" => xmin, "xmax" => xmax
          }
        %>


            <script type="javascript">

                  setInterval(    function ()
                 {
                 onDataReceived(<%=mash.to_json.html_safe%>);



                 }, 5000);
              </script>
4

1 に答える 1

1

問題はmash、ページがレンダリングされるときに一度評価されるため、erb を何度も使用すると常に同じ結果が生成されることです。新しいデータが必要な場合は、おそらく AJAX で要求する必要があります。

Rails では、ビューを使用して JSON をどのようにレンダリングしますか?

jQuery で ajax 呼び出しを行うためのドキュメント: http://api.jquery.com/jQuery.ajax/

元:

setInterval(function() { 
  $.get('route/to/mash.json', function(data) {
     onDataReceived(data);
  });
}, 5000);
于 2013-02-02T09:05:24.843 に答える