红宝石中的“冒号”符号
我是Ruby
的新手,并试图阅读/理解一些rb
文件。我遇到了这条线。任何人都可以解释它在做什么(以及它背后的格局意义)?红宝石中的“冒号”符号
@account = current_user.accounts.find(params[:id])
1:是什么
current_user
?我整理了整个文件,但没有看到它被声明的位置。 (嗯,我知道变量不需要在Ruby中声明,但它没有用@符号来引用,所以这可能不是变量?) 我应该在哪里找到current_user
?2(即
app/model
,app/view
等):什么是:id
意思?params
看起来像一个数组,所以我猜:id
莫名其妙地意味着索引,但为什么id
之前有colon
?
感谢
什么是
current_user
?
通常很难区*部变量和被调用的方法。这是因为()
是可选的,并且经常被省略。在这种情况下,current_user
是一种方法,在某个地方用mixin或superclass声明,这就是它不在此文件中的原因。想想current_user.accounts
为current_user().accounts
,这应该说明那里发生了什么。
我应该在哪里找到
current_user
?
最有可能的是,它提供了一个插件或gem来处理项目的身份验证。如果不了解更多关于您的项目的信息,很难提供更多的建议。
:id
是什么意思?params
它从一个哈希值中提取一个值,通过它的关键。在内部评级法,试试这个:
params = { :id => 123 }
puts params[:id] # => prints 123
所以params为哈希(有些语言称此数据类型关联数组或字典)。这是一种存储一组键/值对的方法。 somehash[somekey]
表示法返回somekey
的值somehash
。
:id
本身是一个符号。这有点像一个永不改变的字符串。对ruby符号进行一些研究以了解更多信息。
而在rails中,params
是一个特殊的散列。从请求中传递的值显示在此散列中。因此,当您加载/books/123
时,路径/books/:id
将会激活,这会在控制器中将params[:id]
设置为123
。
当前用户可能是由宝石提供。宝石的例子是Devise。
“params”是作为查询字符串传递给URI的参数的散列值。所以,“:id”会引用id参数的值。
实施例:
www.domain.com?id=abc将产生PARAMS [:ID]为 “ABC”。