我有一个非常基本的应用程序,它连接到 ( http://is.gd ) API,缩短任何用户指定的 URL。这是我必须执行此操作的当前代码(作为静态请求完美运行):
# app.rb
require "sinatra"
require "open-uri"
def shorten_url(url)
open("http://is.gd/api.php?longurl=#{url}").read
rescue
nil
end
get "/" do
erb :index
end
get "/shorten?" do
if shorten_url(params[:url])
flash.now[:success] = "New URL: <strong>#{shorten_url(params[:url])}</strong>"
else
flash.now[:error] = "Woops, something went wrong when we tried to convert your URL. Please try again."
end
end
我知道这是一个 Sinatra 应用程序,但如果具有 Rails 背景的用户无法理解它,我会有些担心;)。这是我的索引视图文件...
# index.erb / index.html.erb
<h4>Enter URL</h4>
<form action="/shorten" method="get">
<input type="text" name="url" placeholder="Enter URL to be shortened...">
<input type="submit" value="Shorten!">
</form>
所以我已经完成了所有这些工作,现在我要做的最后一件事是让它在您在索引页面 (AJAX) 上提交表单时页面不会刷新。我知道如何在 jQuery 中做到这一点,但是有没有一个红宝石宝石可以做到这一点?如果是这样,它是如何使用的?