没有将Array隐式转换为String?

时间:2014-03-20 01:44:48

标签: ruby sinatra

我有一个带有以下GET方法的Sinatra应用程序,它接受传入的URL:

get  %r{/html/(.+)}  do 
  url = params[:captures] # stores url => http://www.example.com

  gethtml(url)
end

但是,当调用gethtml(url)时,会引发错误Sinatra no implicit conversion of Array into String

gethtml接受http://example.com等输入。

我知道这是一个数据类型转换问题,我尝试调用to_s但它没有用。

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:4)

params[:captures]返回一个字符串数组,而get_html最有可能接受一个字符串作为字符串。

由于您要使用匹配的第一个组作为URL:

get %r|/html/(.+)| do
  get_html params[:captures].first
end

这与the Routes section of the README与正则表达式的匹配示例一致。