应用程序/控制器/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 方法被调用了两次,它直接在标签内。为什么它被调用两次?
谢谢你。