Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/377.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jquery datatables rails中忽略的筛选器_Javascript_Ruby On Rails_Ruby On Rails 3_Coffeescript - Fatal编程技术网

Javascript jquery datatables rails中忽略的筛选器

Javascript jquery datatables rails中忽略的筛选器,javascript,ruby-on-rails,ruby-on-rails-3,coffeescript,Javascript,Ruby On Rails,Ruby On Rails 3,Coffeescript,我使用jquery datatables rails为我的索引提供了一些信息,并添加了以下过滤器。但是,datatable似乎忽略了过滤器,并且它们在get请求中没有显示为请求的json的一部分 我已经附上了我的索引方法、datatables类、我的索引视图和我正在运行的coffeescript 指数法 def index @sbcons = Subcontractor.scoped if filters = params[:filter] @sbcons = @

我使用jquery datatables rails为我的索引提供了一些信息,并添加了以下过滤器。但是,datatable似乎忽略了过滤器,并且它们在get请求中没有显示为请求的json的一部分

我已经附上了我的索引方法、datatables类、我的索引视图和我正在运行的coffeescript

指数法

  def index
    @sbcons = Subcontractor.scoped
    if filters = params[:filter]
      @sbcons = @sbcons.where(sbcon_type: filters[:type]) unless filters[:type].blank?
      @sbcons = @sbcons.where(cscs_card: filters[:cscs]) unless filters[:cscs].blank?
      @sbcons = @sbcons.where(approved_status: filters[:approved]) unless filters[:approved].blank?
    end
    respond_to do |format|
      format.html
      format.json do
        render json: SubcontractorsDatatable.new(view_context, @sbcons)
      end
    end
  end
索引视图

<% provide(:title, 'All Subcontractors') %>
<h1>Subcontractors List</h1>
<div class="filter">
  <%= form_tag(method: :get, id: "filter_form") do %>
    <%= label_tag :sbcon_type, "Type" %>
    <%= select_tag "filter[type]", options_for_select([[],["Labour Only"], ["Specialist"], ["Both"]]) %>
    <%= label_tag :cscs_card, "CSCS" %>
    <%= select_tag "filter[cscs]", options_for_select([[],["Yes"], ["No"]]) %>
    <%= label_tag :approved_status, "Approved Status" %>
    <%= select_tag "filter[approved]", options_for_select([[],["Approved"], ["Not Approved"]]) %> <br>
    <%= link_to "Filter", '#', id: "filterbutton", class: "btn btn-mini" %>
  <% end %>
  <br>
</div>
<table id="subcontractors" class="table table-condensed table-hover display" data-source="<%= subcontractors_url(format: "json") %>">
  <thead>
    <tr>
      <th>Name</th>
      <th>Contact Number</th>
      <th>CSCS</th>
      <th>Type</th>
      <th>Scotland</th>
      <th>NE England</th>
      <th>NW England</th>
      <th>Midlands</th>
      <th>SE England</th>
      <th>SW England</th>
      <th>London</th>
      <th>Wales</th>
      <th>Operatives</th>
      <th>Product Liability</th>
      <th>Employer Liability</th>
      <th>Public Liability</th>
      <th>Contractors All Risk</th>
      <th>Status</th>
    </tr>
  </thead>
  <tbody>
  </tbody>
</table>

<%= javascript_tag do %> 
  $('#filterbutton').click(function (){
    $('#subcontractors').dataTable().fnDraw();
  });
<% end %>
咖啡脚本

jQuery ->
        $('#subcontractors').dataTable
          sPaginationType: "bootstrap"
          sdom: "<'row-fluid'<'span6'l><'span6'f>r>t<'row-fluid'<'span6'i><'span6'p>>"
          bProcessing: true
          bServerSide: true
          sAjaxSource: $('#subcontractors').data('source')
          fnServerParams: (aoData) ->
              for form_element in $('#filter_form').serializeArray()
                aoData.push
                  name: form_element.name
                  value: form_element.value
jQuery->
$(“#分包商”)。数据表
sPaginationType:“引导”
sdom:“t”
b处理:true
bServerSide:true
sAjaxSource:$(“#分包商”).数据('source')
fnServerParams:(aoData)->
对于$('#filter_form')中的form_元素。serializeArray()
aoData.push
名称:form_element.name
值:form_element.value

在Abram的建议下,我查看了if过滤器部分,发现它从未被调用过。我通过修改form_标签修复了此问题,如下所示:

<%= form_tag('#', method: :get, id: "filter_form") do %>

通过这些修正,过滤器可以正常工作并显示正确的结果。

在Abram的建议下,我查看了if过滤器部分,发现它从未被调用过。我通过修改form_标签修复了此问题,如下所示:

<%= form_tag('#', method: :get, id: "filter_form") do %>

通过这些更正,过滤器可以正常工作并显示正确的结果。

嘿,Ryan,你是在用pry调试吗?不,我甚至不知道从哪里开始查找,我不知道为什么它会跳过过滤步骤。嗯,在这种情况下,我通常会将binding.pry扔进不同的地方,看看哪里没有触发。。。添加gem“pry”和gem“pry调试器”。。然后捆绑。。然后重新启动服务器。。然后在代码中的任意位置添加binding.pry,当服务器点击binding.pry时,它将停止,您可以在您的环境中与irb控制台交互。。。尝试在您希望调用它的地方添加它,您可能会发现您的问题。在使用binding.pry Triggered重新加载页面后,不要忘记检查服务器控制台中的pry irb。例如,您可以将'binding.pry'放在filters=params[:filter]的正下方,并查看页面加载是否挂起,以测试filters=params[:filter]是否为真。如果有,你就被分类了。。检查您的服务器控制台。。如果不是。。嗯,如果filters=params[:filter]为false嘿,Ryan,你是在用pry调试这个吗?不,我甚至不知道从哪里开始查找,我不知道为什么它会跳过过滤步骤。嗯,在这种情况下,我通常会将binding.pry扔到不同的地方,看看哪里没有触发检查。。。添加gem“pry”和gem“pry调试器”。。然后捆绑。。然后重新启动服务器。。然后在代码中的任意位置添加binding.pry,当服务器点击binding.pry时,它将停止,您可以在您的环境中与irb控制台交互。。。尝试在您希望调用它的地方添加它,您可能会发现您的问题。在使用binding.pry Triggered重新加载页面后,不要忘记检查服务器控制台中的pry irb。例如,您可以将'binding.pry'放在filters=params[:filter]的正下方,并查看页面加载是否挂起,以测试filters=params[:filter]是否为真。如果有,你就被分类了。。检查您的服务器控制台。。如果不是。。嗯,如果filters=params[:filter]是错误的,他们只是想确保其他一切都正常工作,比如您的搜索和排序?我有一种感觉,在上面看到的情况下,如果您有一个搜索项和一个过滤器,过滤器将覆盖搜索项。。如果我错了,请纠正我。我希望我是!他们工作得很好,我认为这也会引起问题,但谢天谢地,这不是一个令人印象深刻的范围。嘿,只是想确保其他一切都正常工作,比如你的搜索和排序?我有一种感觉,如果你有一个搜索词和一个过滤器,过滤器将覆盖搜索词。。如果我错了,请纠正我。我希望我是!它们工作得很好,我认为这也会引起问题,但谢天谢地,它们的范围令人印象深刻。
def initialize(view, subcontractors)
    @view = view
  end
def fetch_subcontractors
    subcontractors = Subcontractor.order("#{sort_column} #{sort_direction}")
    subcontractors = subcontractors.page(page).per_page(per_page)
    if params[:sSearch].present?
      subcontractors = subcontractors.where("sbcon_name like :search or con_tel_num like :search", search: "%#{params[:sSearch]}%")
    end
    if filters = params[:filter]
      binding.pry
      subcontractors = subcontractors.where(sbcon_type: filters[:type]) unless filters[:type].blank?
      subcontractors = subcontractors.where(cscs_card: filters[:cscs]) unless filters[:cscs].blank?
      subcontractors = subcontractors.where(approved: filters[:approved]) unless filters[:approved].blank?
    end
    subcontractors
  end