我收到了带有以下rake任务的undefined local variable or method 'address_geo' for main:Object
。有什么问题吗?
include Geokit::Geocoders
namespace :geocode do
desc "Geocode to get latitude, longitude and address"
task :all => :environment do
@spot = Spot.find(:first)
if @spot.latitude.blank? && [email protected]?
puts address_geo
end
def address_geo
arr = []
arr << address if @spot.address
arr << city if @spot.city
arr << country if @spot.country
arr.reject{|y|y==""}.join(", ")
end
end
end
最佳答案
更新:Gotcha
这可能会将方法添加到全局范围,并且将与任何其他具有相同名称的方法发生冲突。查看@Hula_Zell的答案https://stackoverflow.com/a/44294243/584440,以获得更好的方法。
原始答案
您正在rake任务中定义方法。为了获得该功能,您应该在rake任务外部(任务块外部)定义。尝试这个:
include Geokit::Geocoders
namespace :geocode do
desc "Geocode to get latitude, longitude and address"
task :all => :environment do
@spot = Spot.find(:first)
if @spot.latitude.blank? && [email protected]?
puts address_geo
end
end
def address_geo
arr = []
arr << address if @spot.address
arr << city if @spot.city
arr << country if @spot.country
arr.reject{|y|y==""}.join(", ")
end
end