了解Ruby符号

弗兰

符号是不可变的对象,是轻量级的字符串,并且不能进行垃圾回收。我不了解它们如何在Rails路线或路径中工作。例如,在:

get '/patients/:id', to: 'patients#show'

:id将被替换为数字,我们得到类似的信息/patitent/1但是:id = 1是不允许的。这项作业如何进行?

尼尔·斯莱特(Neil Slater)

该值'/patients/:id'是一个普通的Ruby字符串,尽管该:id部分看起来像一个符号,但实际上不是。

Rails解析字符串时,它将使用冒号来标识路径中的参数名称。当它通过接收诸如之类的请求来设置参数时GET /patients/1,它不会尝试更改符号值,但是会执行以下操作

params[:id] = '1'

请注意,我不是100%肯定不是"id"在这里仅使用字符串作为键。但是无论哪种方式,您都看不到它不会更改任何符号值,而只是使用符号名称,因此您知道它将存储在参数中的哪个键下Hash

':id'URL参数定义的一部分与您使用Symbol文字的相似性:id可能令人困惑,但这是Rack路径处理引擎中使用的共享设计选择,因此大多数Ruby Web框架都使用相同的样式。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章