Datamapper在保存网址时会中断应用

时间:2013-02-26 22:22:54

标签: ruby sinatra datamapper

我正在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)。

编辑:当我更改代码以允许非网址时,它正常运行。它只会打破精确的网址格式。

0 个答案:

没有答案