【发布时间】:2016-08-14 09:24:53
【问题描述】:
我有一个带有称为“调用”的控制器/视图的 Rails 应用程序。这是 index 的基本控制器操作:
calls_controller.rb
def index
if params[:region].present?
@assigned = Call.where(region_id: params[:region][:area]).assigned_calls.until_end_of_day
@unassigned = Call.where(region_id: params[:region][:area]).unassigned_calls.until_end_of_day
else
@assigned = Call.assigned_calls.until_end_of_day
@unassigned = Call.unassigned_calls.until_end_of_day
end
end
以下是我的看法:
index.js.erb
$('#active').html("<%= escape_javascript render :partial => 'calls/assigned_calls', :locals => {:assigned_calls => @assigned} %>");
$('#inactive').html("<%= escape_javascript render :partial => 'calls/unassigned_calls', :locals => {:unassigned_calls => @unassigned} %>");
$(".select").select2({
placeholder: "Select One",
allowClear: true
});
index.html.erb
<div id="active">
<%= render "assigned_calls" %>
</div>
<div id="inactive">
<%= render "unassigned_calls" %>
</div>
<script>
$(document).ready(function() {
setInterval(function () {
$.ajax('calls/<%= params[:region][:area] %>');
} , 5000);
});
</script>
_assigned_calls.html.erb(查看代码省略)
<%= form_tag calls_path, :method => 'get' do %>
<p>
<%= select_tag "region[area]", options_from_collection_for_select(Region.order(:area), :id, :area, selected: params[:region].try(:[], :area)), prompt: "Choose Region" %>
<%= submit_tag "Select", :name => nil, :class => 'btn' %>
因此,如果我没有传递 :region 的参数,那么在页面加载时会发生什么,它会设置调用而不受区域范围的限制。如果 region_id 存在,那么它的调用范围是 region_id 为“1”或从 submit_tag 传递的任何区域 ID。
这在控制器和视图中运行良好,但这是我的问题。我的 index.html.erb 我需要在不干扰传递的参数的情况下刷新部分。所以在 setInterval 上,我需要弄清楚如何在保留 URL 中传递的参数的同时重新加载部分。
我尝试使用 setInterval 方法来解决这个问题,但我不确定我在这里 100% 在做什么。
有人可以给我一些建议,告诉我如何在保持参数的同时每 5 秒刷新一次部分,以便我的实例变量通过刷新保持不变?
如果您需要更多上下文和/或代码,请告诉我。
更新 尝试根据用户的回答重新编写 javascript,这就是我所拥有的。
<script>
$(document).ready(function() {
setInterval(function () {
$.ajax({
url: 'calls_path',
type: "GET",
data: { "region": '<%= @region.html_safe %>' }
}), 5000);
});
});
</script>
页面将加载,但当它试图在 chrome 检查器中触发时,我得到:
calls?utf8=✓®ion[area]=3:2901 Uncaught SyntaxError: Unexpected token )
可能这是一个 JS 语法错误,或者我没有正确关闭函数。
【问题讨论】:
标签: javascript jquery ruby-on-rails ajax ruby-on-rails-3