我使用以下代码将Matchdata与Hash合并:
params = {
:url => 'http://myradiowebsite.com/thestation'
}
pattern = Regexp.new('^https?://(?:www.)?myradiowebsite.com/(?<station_slug>[^/]+)/?$')
matchdatas = pattern.match(params[:url])
#convert named matches in MatchData to Hash
#https://stackoverflow.com/a/11690565/782013
datas = Hash[ matchdatas.names.zip( matchdatas.captures ) ]
params = params.merge(datas)
但这给我的参数哈希中的混合键:
{:url =>“ http://myradiowebsite.com/thestation ”,“ station_slug” =>“ thestation”}
稍后使用键获取哈希值是一个问题。我想将它们标准化为符号。
我正在学习Ruby,如果该代码有问题,有人可以向我解释,以及如何对其进行改进?
谢谢 !
您可以将的键转换datas
为符号:
Hash[ matchdatas.names.zip( matchdatas.captures ) ].transform_keys(&:to_sym)
或使用字符串键定义参数哈希:
params = { 'url' => 'http://myradiowebsite.com/thestation' }