#jquery #ruby-on-rails #ajax #slim-lang #turbolinks-5
Вопрос:
приложение/контроллеры/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 %>
информация: Разделы загружаются по запросу ajax, который выполняется по внутреннему тегу «admin.html.slim».
(как для turbolink, так и для не-turbolink посетите admin.html.slim) При загрузке admin.html.slim метод $.ajax вызывается дважды, который находится непосредственно внутри тега. Почему его вызывают дважды ?
Спасибо.