0

应用程序/控制器/dashboards_controller.rb

class DashboardsController < ApplicationController
  def admin
    if request.xhr?
      if params[:section] == 'sales_bar'
        @sales_bar = current_user.sales_bar.to_json
      elsif params[:section] == 'orders_bar'
        @orders_bar = current_user.orders_bar.to_json
      else
        @sales_bar = current_user.sales_bar.to_json
        @orders_bar = current_user.orders_bar.to_json
      end
    end

    respond_to do |format|
      format.js
      format.html
    end
  end
end

应用程序/视图/仪表板/admin.html.slim

.charts
  #sales-bar-section
    .ui.segment
      .head
      .content
        .ui.inverted.dimmer.active
          .ui.indeterminate.small.text.loader = 'Loading'

  #orders-bar-section
    .ui.segment
      .head
      .content
        .ui.inverted.dimmer.active
          .ui.indeterminate.small.text.loader = 'Loading'

javascript:

  $.ajax({
          url: "#{admin_dashboard_path}", // dashboards_controller#admin as js
          dataType: 'script',
          type: 'GET',
          data: {
              month: "#{Date.today.to_s}"
          }
      }).success(function () {
          $('.ui.dimmer').removeClass('active');
      }).error(function () {
          $('.ui.dimmer').removeClass('active');
          show_ajax_error("Error loading data - Please refresh page again.");
      });

应用程序/视图/仪表板/admin.js.erb

<% if params[:section] == 'orders_bar' %>
  $("#orders-bar-section").html("<%= escape_javascript(render partial: 'dashboards/orders_bar', locals: { widget_data: @orders_bar, url: admin_dashboard_path }).html_safe %>");
<% elsif params[:section] == 'sales_bar' %>
  $("#sales-bar-section").html("<%= escape_javascript(render partial: 'dashboards/sales_bar', locals: { widget_data: @sales_bar, url: admin_dashboard_path }).html_safe %>");
<% else  %>
  $("#orders-bar-section").html("<%= escape_javascript(render partial: 'dashboards/orders_bar', locals: { widget_data: @orders_bar, url: admin_dashboard_path }).html_safe %>");
  $("#sales-bar-section").html("<%= escape_javascript(render partial: 'dashboards/sales_bar', locals: { widget_data: @sales_bar, url: admin_dashboard_path }).html_safe %>");
<% end %>

信息:这些部分是在标签内的“admin.html.slim”上进行的 ajax 请求上加载的。

(对于 turbolink/non-turbolink 访问 admin.html.slim)当 admin.html.slim 被加载时,$.ajax 方法被调用了两次,它直接在标签内。为什么它被调用两次?

谢谢你。

4

0 回答 0