Rails模板::错误(堆栈级别太深) - 但控制器工作,并且json呈现正常

时间:2013-07-18 17:00:38

标签: ruby-on-rails erb

现在这里有一个难题......(是的,有些问题符合我的关键字 - 但不是我的情况,看起来似乎......)

有一个非常简单的rails应用程序。控制器中只有'index'动作,它从数据库返回所有模型,或者根据GET查询参数(不是通过ORM)应用过滤。

前两个参数很好,第三个让我发疯。那个是使用第三方gem(计算从模型表示的点到查询中传递的点的地理距离)。代码在控制台和控制器的服务器上工作正常,如果我渲染json。但是,在尝试渲染html时,视图会以:

消亡
Completed 500 Internal Server Error in 959ms

ActionView::Template::Error (stack level too deep):
  sugar-high (0.4.6.4) lib/sugar-high/string.rb:8

顺便说一下,sugar-high是我正在使用的地理距离宝石的依赖,但我没有看到连接 - 所有计算都发生在控制器中,并且它适用于json渲染...为什么渲染html视图会中断?

你可以在这里看到视图代码,它是愚蠢无害的 - 只需浏览模型列表并将每个模型呈现在'li'中,无需其他处理: https://github.com/alexakarpov/earthquakes/blob/master/app/views/earthquakes/index.html.erb

控制器在这里:

https://github.com/alexakarpov/earthquakes/blob/master/app/controllers/earthquakes_controller.rb#L27

和感兴趣的行是:

 near = params[:near]
    if near

      lat, long = near.split(',')
      @near_param = [lat, long]

      @quakes.keep_if { |q|
        dist = GeoDistance::Haversine.geo_distance(lat, long, q.latitude, q.longtitude).miles
        dist <= 5
      }
    end

    respond_to do |format|
      format.html
      format.json { render :json => @quakes }
    end
  end

'但等等,还有更多!'一旦我收到错误,即使没有'bad'参数,也不会有其他html请求。同时,所有json请求都会继续呈现,有或没有'bad'参数。所以,显然,'观点'得到了,嗯...中毒?或者不是视图,而是模板引擎......或者其他什么,我对Rails来说太新了以获得正确的名字......

0 个答案:

没有答案