符号是不可变的对象,是轻量级的字符串,并且不能进行垃圾回收。我不了解它们如何在Rails路线或路径中工作。例如,在:
get '/patients/:id', to: 'patients#show'
:id
将被替换为数字,我们得到类似的信息/patitent/1
。但是:id = 1
是不允许的。这项作业如何进行?
该值'/patients/:id'
是一个普通的Ruby字符串,尽管该:id
部分看起来像一个符号,但实际上不是。
Rails解析字符串时,它将使用冒号来标识路径中的参数名称。当它通过接收诸如之类的请求来设置参数时GET /patients/1
,它不会尝试更改符号值,但是会执行以下操作
params[:id] = '1'
请注意,我不是100%肯定不是"id"
在这里仅使用字符串作为键。但是无论哪种方式,您都看不到它不会更改任何符号值,而只是使用符号的名称,因此您知道它将存储在参数中的哪个键下Hash
':id'
URL参数定义的一部分与您使用Symbol
文字时的相似性:id
可能令人困惑,但这是Rack路径处理引擎中使用的共享设计选择,因此大多数Ruby Web框架都使用相同的样式。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句