我正在 Sinatra 中制作 URL 缩短器应用程序。它的工作原理如下:
首页是一个有一个字段的表单,可以输入一个长网址:
<form action="" method="post">
<input type='url' name='url' placeholder='Enter URL to be shortened'>
<input type="submit">
</form>
表单发布到同一首页,发布到“/”的代码是这样的:
post '/' do
#Makes variable of POSTed url.
@long = params[:url]
loop do
#makes random six letter hash
@rand = (0...6).map{(65+rand(26)).chr}.join.downcase
#don't generate another one if it isn't found in the database
break if Short.first(id: "#{@rand}").nil?
end
#saves url and hash to database
@input = Short.create(url: @long, id: @rand)
#displays link with hash to be copied into browser address bar
"http://192.168.1.3:999/"+@rand
end
问题是当我提交表单时,它不会返回http://192.168.1.3:999/...
我在该@input=Short.create(...
行之后放置的任何内容。即使raise_on_save_failure
为真,它也不会返回任何错误。如果我将该行注释掉,它可以正常工作(尝试使用缩短的 url 时除外)。
编辑:当我更改代码以允许非网址时,它可以正常运行。它只与确切的 url 格式中断。