我是 Rails 的新手,所以我不确定这是否是正确的方法。我有一个视图,其中包含多个复选框的 AJAX 链接,形式为
<% @row_headers.each do |row_header| %>
<% row_header_ = row_header.gsub(" ", "-") %>
<%= check_box_tag row_header_, row_header, params.key?(row_header_),
:data => { :remote => true,
:url => url_for(
controller: :web_pages,
action: :administratorswgraph} %> <%= row_header %>
<% end %>
<% end %>
这是从 :administratorswgraph 视图调用的。稍后在我的文件中
<% if not @swChart.nil? %>
<div id="swChart"></div>
<%= render_chart(@swChart, 'swChart') %>
<% end %>
其中 render_chart 来自GoogleVisualr库。在我有的控制器上
def administratorswgraph
headers = []
@row_headers.each_with_index do |row_header, i|
if params.key? row_header.gsub(" ", "-")
headers.push i
end
end
if headers.empty?
@swChart = nil
else
@swChart = MakeSiteChart(headers, 580, 480)
end
end
MakeSiteChart 函数根据复选框返回一个 GoogleVisualr 对象。我想要的是,每次更改复选框的状态时,都会制作并显示一个新图表。我可以从我的调试器中看出,只要复选框的状态发生更改,确实会在视图中调用 <%= render_chart(@swChart, 'swChart') %>,但是浏览器中的显示永远不会更新。如何在浏览器中显示图表?
编辑 我能够通过使用以下方法来控制 ajax 事件
$('#<%= @row_headers[0].gsub(" ", "-") %>').on('ajax:success', function(event, xhr, settings) {
alert("HERE")
});
出于测试目的,我只连接第一个复选框。但是,我不确定如何解析参数、如何获取图表以及如何将其重新插入 DOM。