Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/67.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 Rails服务器因多个js调用而崩溃_Javascript_Ruby On Rails_Ruby_Mongodb - Fatal编程技术网

Javascript Rails服务器因多个js调用而崩溃

Javascript Rails服务器因多个js调用而崩溃,javascript,ruby-on-rails,ruby,mongodb,Javascript,Ruby On Rails,Ruby,Mongodb,作为一个更大项目的一部分,我正在构建一个灵活的报告功能。我正在努力处理的特定部分可以完美地处理好几个调用,然后导致服务器崩溃。我正在使用mongoid和puma服务器-请让我知道是否有其他信息我可以提供 我已经做了大量的搜索-真的在这个问题上难倒了。提前谢谢你 控制台错误消息 这只是错误的第一部分-它在几页上给出“控制帧信息”、“其他运行时信息”和“进程内存映射” 相关页面js 脚本存储类别字段的值,并将所有选定列值(在多选表单中)推送到一个数组中,并将这两个变量发送到get_filter_co

作为一个更大项目的一部分,我正在构建一个灵活的报告功能。我正在努力处理的特定部分可以完美地处理好几个调用,然后导致服务器崩溃。我正在使用mongoid和puma服务器-请让我知道是否有其他信息我可以提供

我已经做了大量的搜索-真的在这个问题上难倒了。提前谢谢你

控制台错误消息 这只是错误的第一部分-它在几页上给出“控制帧信息”、“其他运行时信息”和“进程内存映射”

相关页面js 脚本存储类别字段的值,并将所有选定列值(在多选表单中)推送到一个数组中,并将这两个变量发送到get_filter_columns控制器操作

get\u filter\u columns.js.erb 由get_filter_columns控制器操作呈现的js模板

$('#过滤器')。替换为('';
\u filters.html.erb 正在由get_filter_columns.js.erb文件渲染的部分


过滤标准
未选择任何筛选列

:
这可能有助于纠正错误,在控制器代码中,这样做至少可以防止多个DB命中连续多次执行Pull

ClassOverrideList = {
  "BSON::ObjectId" => "string",
  "NilClass" => "string",
  "Time" => "date"          
}

def get_filter_columns

    @category = (params[:category] || "Account").split(' ').collect(&:capitalize).join.constantize

    @filter_categories = (params[:filter_columns] || []).map{ |filter| filter }

    @filter_symbols = {}

    @filter_logic = ["Equal to", "Not equal to", "Less than", "Less than or equal to", "Greater than", "Greater than or equal to", "Is between", "Is not between"]

    @filter_categories.each do |fs|
      fs_sym = fs.to_s.to_sym
      if @category.instance_methods(false).include?(fs.to_s.to_sym) == true
        @filter_symbols[fs] = "enum"
      else
        category_class = @category.pluck(fs_sym)[0].class.to_s
        @filter_symbols[fs] = ClassOverrideList[category_class] ||
          category_class ||
          "string"
      end
    end

    render "reports/js_templates/get_filter_columns.js.erb"
end

这可能有助于纠正错误,在控制器代码中这样做,至少可以防止多个DB命中在一行中多次执行清除

ClassOverrideList = {
  "BSON::ObjectId" => "string",
  "NilClass" => "string",
  "Time" => "date"          
}

def get_filter_columns

    @category = (params[:category] || "Account").split(' ').collect(&:capitalize).join.constantize

    @filter_categories = (params[:filter_columns] || []).map{ |filter| filter }

    @filter_symbols = {}

    @filter_logic = ["Equal to", "Not equal to", "Less than", "Less than or equal to", "Greater than", "Greater than or equal to", "Is between", "Is not between"]

    @filter_categories.each do |fs|
      fs_sym = fs.to_s.to_sym
      if @category.instance_methods(false).include?(fs.to_s.to_sym) == true
        @filter_symbols[fs] = "enum"
      else
        category_class = @category.pluck(fs_sym)[0].class.to_s
        @filter_symbols[fs] = ClassOverrideList[category_class] ||
          category_class ||
          "string"
      end
    end

    render "reports/js_templates/get_filter_columns.js.erb"
end

这个问题似乎是通过js连续快速调用.class和.instance_方法引起的。我从控制器操作中删除了.class和.instance_方法,此后就没有问题了

我通过在初始页面加载时编译一个嵌套哈希(格式如下所示)解决了这个问题。然后将散列传递回get_filter_columns控制器操作,以避免在控制器内重新创建散列并调用有问题的方法

column_symbols = { model_1_name: { column_1_name: data_type, column_2_name: data_type }, model_2_name: { column_1_name: data_type, column_2_name: data_type }..... } 

这个问题似乎是通过js连续快速调用.class和.instance_方法引起的。我从控制器操作中删除了.class和.instance_方法,此后就没有问题了

我通过在初始页面加载时编译一个嵌套哈希(格式如下所示)解决了这个问题。然后将散列传递回get_filter_columns控制器操作,以避免在控制器内重新创建散列并调用有问题的方法

column_symbols = { model_1_name: { column_1_name: data_type, column_2_name: data_type }, model_2_name: { column_1_name: data_type, column_2_name: data_type }..... } 

据了解,问题可能在于您直接包含的C扩展或您包含的Gem中。看看那个博客里有什么有用的东西吗?嗨,迈克尔,谢谢你的回复。这似乎是控制器操作的问题。我注释掉了决定表单字段类型的块,问题不再出现。关于如何以与我在控制器操作中不同的方式确定字段数据类型,您有什么想法吗?据我所知,问题可能在于您直接包含的C扩展或您包含的Gem中。看看那个博客里有什么有用的东西吗?嗨,迈克尔,谢谢你的回复。这似乎是控制器操作的问题。我注释掉了决定表单字段类型的块,问题不再出现。关于如何以与控制器操作不同的方式确定字段数据类型,您有什么想法吗?
$('#filters').replaceWith('<%= j render("reports/partials/filters") %>');
<div class="col-lg-7" id = "filters">
    <div class = "ibox-content report_builder_body">
        <h2>Filter Criteria</h2>
        <div class="scroll_content">
            <% if @filter_categories.nil? || @filter_categories.size == 0 %>
                <p> No filter columns have been selected! </p>
            <% else %>
                <%= simple_fields_for :filters_nested_form do |ff| %>
                    <% (@filter_categories || []).each do |filter| %>
                        <div class = "col-lg-3"> 
                            <h5>
                                <%= filter.to_s.underscore.humanize %>:
                            </h5>    
                        </div>
                        <%= ff.simple_fields_for :"#{filter}" do |fff| %>
                            <div class = "col-lg-5">
                                <%= fff.input :logic, collection: @filter_logic, label: false %>
                            </div> 
                            <div class = "col-lg-4">
                                <%= fff.input :criteria, as: :"#{@filter_symbols[filter].to_s.downcase}", label: false %>
                            </div>   
                        <% end %>    
                    <% end %>
                <% end %>
            <% end %>
        </div>
    </div>    
</div>
ClassOverrideList = {
  "BSON::ObjectId" => "string",
  "NilClass" => "string",
  "Time" => "date"          
}

def get_filter_columns

    @category = (params[:category] || "Account").split(' ').collect(&:capitalize).join.constantize

    @filter_categories = (params[:filter_columns] || []).map{ |filter| filter }

    @filter_symbols = {}

    @filter_logic = ["Equal to", "Not equal to", "Less than", "Less than or equal to", "Greater than", "Greater than or equal to", "Is between", "Is not between"]

    @filter_categories.each do |fs|
      fs_sym = fs.to_s.to_sym
      if @category.instance_methods(false).include?(fs.to_s.to_sym) == true
        @filter_symbols[fs] = "enum"
      else
        category_class = @category.pluck(fs_sym)[0].class.to_s
        @filter_symbols[fs] = ClassOverrideList[category_class] ||
          category_class ||
          "string"
      end
    end

    render "reports/js_templates/get_filter_columns.js.erb"
end
column_symbols = { model_1_name: { column_1_name: data_type, column_2_name: data_type }, model_2_name: { column_1_name: data_type, column_2_name: data_type }..... }