( 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でこれを行う方法は知っていますが、これを行うRuby gemはありますか? もしそうなら、それはどのように使われますか?