Rails Geocoder在rubysl/net/http/http.rb上的nil:NilClass上未定义的方法“to_sym”
所以我在RubyonRails上开发了一个使用gem的网站 以下是我的实现:Rails Geocoder在rubysl/net/http/http.rb上的nil:NilClass上未定义的方法“to_sym”,ruby,ruby-on-rails-4,rails-geocoder,rubinius,Ruby,Ruby On Rails 4,Rails Geocoder,Rubinius,所以我在RubyonRails上开发了一个使用gem的网站 以下是我的实现: def User < ActiveRecord::Base before_save :geocode geocoded_by :address do |usr, geocode_results| if geo = geocode_results.first usr.latitude = geo.latitude usr.longitude = geo.
def User < ActiveRecord::Base
before_save :geocode
geocoded_by :address do |usr, geocode_results|
if geo = geocode_results.first
usr.latitude = geo.latitude
usr.longitude = geo.longitude
usr.geocode_address = geo.address
else
usr.latitude = nil
usr.longitude = nil
usr.geocode_address = nil
end
end
事实证明,这就是to_sym for nil:NilClass错误的罪魁祸首——grep似乎什么也没发现
Rails地理编码器正在调用Net:HTTP
我怀疑这是rbx-2.2.1问题,所以我将尝试切换到ruby-2.2.1,看看它是否会在接下来的几天内发生。这曾经发生在任何人身上吗
编辑:如果我重新启动rails服务器线程,问题就会消失,但会在1-2天内恢复
编辑:这是导致问题的用户\控制器
respond_to do |format| #line 169
@id = @user.id
@user.update(user_params) #line 171
if params[:user][:redirect_to_index].present? or @user.chef?
format.html { redirect_to root_path }
format.json { render :show, status: :ok, location: @user }
else
format.html { redirect_to @user }
format.json { render :show, status: :ok, location: @user }
end
end
我通过从rbx-2.2.1切换到ruby-2.2.1解决了这个问题。我认为这似乎是由geocoder和rbx-2.2.1之间的一些错误造成的。很难读取stacktrace。。。也许你可以清理一下?嘿,很抱歉-显示堆栈跟踪的首选方式是什么?也许我可以删除不相关的部分,我不知道-我真的不知道一行何时结束,另一行何时开始:P看起来好像是线被包起来了。如果你可以打开这些行,那么只需使用可点击的代码,而不是使用
标记或>,将其转换为代码,这可能更容易解码:当然,给我一分钟时间,我已经对它们进行了编码。。。但看起来这些线还是在你把它们粘到这里之前被包装好的?代码和堆栈跟踪混杂在一起。。。
respond_to do |format| #line 169
@id = @user.id
@user.update(user_params) #line 171
if params[:user][:redirect_to_index].present? or @user.chef?
format.html { redirect_to root_path }
format.json { render :show, status: :ok, location: @user }
else
format.html { redirect_to @user }
format.json { render :show, status: :ok, location: @user }
end
end