dhtmlxGrid Редактируемая сетка Errno: ECONNRESET - PullRequest
1 голос
/ 03 февраля 2012

Я очень новичок в Ruby и Rails.

Я использую рельсы 3.0.9 и ruby ​​1.9.2

Я использовал dhtmlxGrid, показанный на этой странице: http://www.dhtmlx.com/blog/?p=426

Я случайно получаю следующую ошибку после добавления и удаления нескольких записей в сетке: "ОШИБКА Errno: ECONNRESET: существующее соединение было закрыто удаленным хостом

C:/Railsinstaller/Ruby1.9.2/lib/ruby1.9.1/webrick/httpserver.rb:56 in 'eof?'

C:/Railsinstaller/Ruby1.9.2/lib/ruby1.9.1/webrick/httpserver.rb:56 in 'run'

C:/Railsinstaller/Ruby1.9.2/lib/ruby1.9.1/webrick/server.rb:183 in 'block in start_thread'

Сервер не падает сразу. Вместо этого он случайным образом падает после выполнения некоторых запросов GET. Затем я получаю сообщение об ошибке Windows о том, что мой Ruby Interpreter (CUI) 1.9.2p290 потерпел крах.

Как мне избежать этой нестабильности?

Моя модель выглядит так:

class Timestep < ActiveRecord::Base

has_many :prodcaps, :dependent => :destroy
has_many :demands, :dependent => :destroy
has_many :maxaddcaps, :dependent => :destroy
has_many :addcapcosts, :dependent => :destroy
validates :stepnumber,     :presence   => true
attr_accessible :stepnumber

end

Контроллер временных шагов выглядит так:

class TimestepsController < ApplicationController
 def view
 end
 def data
     @timesteps = Timestep.all()
 end
 def dbaction
     #called for all db actions
     stepnumber = params["c0"]

     @mode = params["!nativeeditor_status"]

     @id = params["gr_id"]
     case @mode
         when "inserted"
             timestep = Timestep.new
             timestep.stepnumber = stepnumber
             timestep.save!

             @tid = timestep.id

         when "deleted"
             timestep=Timestep.find(@id)
             timestep.destroy

             @tid = @id

         when "updated"
             timestep=Timestep.find(@id)
             timestep.stepnumber = stepnumber
             timestep.save!

             @tid = @id

     end
 end
end

Представление временных шагов таково:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
 <head>
    <%= render 'shared/grid_head' %>
 </head>
 <body>
     <div id="grid_here" style="width:600px; height:400px;">
     </div>
      <script type="text/javascript" charset="utf-8">
         var grid = new dhtmlXGridObject("grid_here");
         grid.setImagePath("/javascripts/codebase/imgs/");
         grid.setHeader("Zeitpunkt");
         grid.setColSorting("str");
         grid.setInitWidths("*");
         grid.setSkin("dhx_skyblue");
         grid.init();
         grid.load("/timesteps/data.xml");

         dp = new dataProcessor("/timesteps/dbaction.xml");
         dp.init(grid);
     </script>
     <input type="button" value="Add" onclick="grid.addRow(grid.uid(),'<%=Timestep.last.stepnumber+1%>'); javascript:timedRefresh(500)"> 
     <input type="button" value="Delete" onclick="grid.deleteSelectedRows(); javascript:timedRefresh(500)">
 </body>
</html>

с общим заголовком:

<script src="/javascripts/codebase/dhtmlxcommon.js" type="text/javascript" charset="utf-8"></script>
<script src="/javascripts/codebase/dhtmlxgrid.js" type="text/javascript" charset="utf-8"></script>
<script src="/javascripts/codebase/dhtmlxgridcell.js" type="text/javascript" charset="utf-8"></script>
<script src="/javascripts/codebase/dhtmlxdataprocessor.js" type="text/javascript" charset="utf-8"></script>
<link rel="stylesheet" href="/javascripts/codebase/dhtmlxgrid.css" type="text/css" media="screen" charset="utf-8">
<link rel="stylesheet" href="/javascripts/codebase/skins/dhtmlxgrid_dhx_skyblue.css" type="text/css" media="screen" charset="utf-8">
<script type="text/javascript" charset="utf-8">
        <%#Definiere Funktion zur Aktualisierung der Seite%>
        <%#Übernommen von http://www.quackit.com/javascript/javascript_refresh_page.cfm %>
        function timedRefresh(timeoutPeriod) {
        setTimeout("location.reload(true);",timeoutPeriod);
        }
</script>

и, наконец, data.xml.builder выглядит следующим образом:

xml.instruct! :xml, :version=>"1.0"

 xml.tag!("rows") do
   Timestep.all.each do |timestep|
     xml.tag!("row",{ "id" => timestep.id }) do
         xml.tag!("cell", timestep.stepnumber)
     end
   end
 end

1 Ответ

0 голосов
/ 06 февраля 2012

Эта ошибка больше не возникает после развертывания приложения на heroku. Мне кажется, что это проблема вебрика.

...