0

我正在 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 格式中断。

4

0 回答 0