在Rails 3中::表示什么?

时间:2011-11-30 03:07:05

标签: ruby-on-rails-3

我正在Rails 3中实现一个API,并注意到一个像class Api::ToursController < ApplicationController定义的示例控制器。有谁知道冒号表示什么?它是继承吗?或者它是否指示扩展ToursController?我试着寻找答案,但还没有想出任何答案。

以下是我引用的内容:https://github.com/nesquena/rabl/wiki/Set-up-rabl-for-Ruby-on-Rails

3 个答案:

答案 0 :(得分:5)

::是许多语言的范围解析运算符(即名称空间运算符),包括C ++和Ruby,所以它并不特定于Rails。

在Ruby中,模块定义了名称空间,因此您可以看到如下代码:

Net::HTTP.get 'stackoverflow.com'

get模块的HTTP类中调用Net类方法。

在Rails中,名称空间允许您更好地组织代码(例如,将API控制器与其他代码分开),并作为模块实现。

答案 1 :(得分:1)

Api::ToursController表示有一个名为Api的外部模块,其中ToursController类位于其中。 ::是名称空间运算符。

有时您会看到以::开头的模块名称,例如::Something,这表明Ruby要查看名为Something的类或模块的最外层命名空间(Main)。这通常发生在您在gem的源代码中的某个位置并且它引用外部类或模块时。

您可以include Api将当前级别的模块Api中的所有内容包含在内,这样您就不需要名称空间运算符,并且可以使用ToursController而不使用'Api ::前缀' “

答案 2 :(得分:0)

它是命名空间! Module :: Class.method