在模型中明显定义时由控制器操作生成的未定义方法

时间:2015-08-20 07:46:46

标签: ruby-on-rails-3.2

该类在模型中定义了以下方法:

def EWKB
  RGeo::WKRep::WKBGenerator.new(:type_format => :ewkb, :emit_ewkb_srid => true, :hex_format => true)
end

def self.containing_latlon(lat, lon, polygon)
  ewkb = EWKB.generate(FACTORY.point(lon, lat).projection)
  where("ST_Intersects(polygon, ST_GeomFromEWKB(E'\\\\x#{ewkb}'))")
end

在类控制器中调用动作时

point_in = containing_latlon(@point_p.lat, @point_p.lon, @polygon)

Rails返回NoMethodError

undefined method `containing_latlon' 

我无法理解为什么这种方法被认为是未定义的

修改
以下garry的评论是正确的。

1 个答案:

答案 0 :(得分:0)

这是一种类方法,正如您在代码中定义的那样

ModalName.containing_latlon(lat, lon, polygon)

您必须使用类名称(型号名称)来调用它。

PrintWriter writer = new PrintWriter(outputFile);

for (int i=0;i<<name>.length;i++){ 
writer.println(<ArrayListName>[i].getString(), + "\t" + <ArrayListName>[i].getFirstInt() + "\t" + <name>.[i].getSecondInt +<etc...>); 
}

lat,lon,polygon是变量,您要发送到contains_latlon方法