在Java中,我可能会:

public static void doSomething();

然后我可以静态访问该方法,而无需创建实例:

className.doSomething(); 

我用Ruby怎么做?这是我的课,从我的理解来看,self.使方法是静态的:

class Ask

  def self.make_permalink(phrase)
    phrase.strip.downcase.gsub! /\ +/, '-'
  end

end

但当我试着打电话时:

Ask.make_permalink("make a slug out of this line")

我得到:

undefined method `make_permalink' for Ask:Class

如果我没有声明方法是私有的,为什么会这样?

推荐答案

你给出的例子效果很好

class Ask
  def self.make_permalink(phrase)
    phrase.strip.downcase.gsub! /\ +/, '-'
  end
end

Ask.make_permalink("make a slug out of this line")

我试过1.8.7和1.9.3

祝你一切顺利

Ruby-on-rails相关问答推荐

为什么Rails数值验证器不使用规格化值?

查询Where Date.parse Rails

Rails 6:强类型原始 SQL 查询返回数组类型

Ruby on Rails 让外键工作

Rails 7.0.4 和 link_to 的数据确认不起作用

如何在 Ruby on Rails 中正确存储 BigDecimal

在 Rails 3.2 中更新多行

Rails:如何访问 RESTful 助手?

Ruby/Rails 中的类方法与常量

如何在两个日期之间生成随机日期和时间?

rails4 未知编码名称 - CP720

为什么在保存对象后使用重新加载方法? (Hartl Rails Tut 6.30)

指定要从 before_filter 中排除的控制器

是否可以在 Rails 集成测试或规范中指定用户代理?

Rails - 从日期和时间戳获取日期

升级到 ruby​​ 1.9.2 后奇怪的无法要求配置/ bootstrap

ActiveRecord 查找现有表索引

Heroku Postgres 错误:PGError:错误:关系组织不存在(ActiveRecord::StatementInvalid)

何时在 Ruby on Rails 中使用 lambda?

rails路由中资源和资源之间的区别?