现在这是一个难题......(是的,有些问题与我的关键字相匹配 - 但不是我的情况,看起来......)
有一个非常简单的 Rails 应用程序。只有控制器中的“索引”操作,它要么返回数据库中的所有模型,要么应用基于 GET 查询参数的过滤(而不是通过 ORM)。
前两个参数很好,第三个让我发疯。那是使用第 3 方 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 是我正在使用的地理距离 gem 的依赖项,但我没有看到连接——所有计算都在控制器中进行,并且它适用于 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
“但是等等,还有更多!” 一旦我得到错误,没有其他对 html 的请求将起作用——即使没有“坏”参数。同时,所有的 json 请求都会不断地被渲染,不管有没有 'bad' 参数。所以,很明显,“观点”变得,嗯……中毒了?或者不是视图,而是模板引擎……或者其他什么,我对 Rails 太陌生了,无法获得正确的名称……