-1

我有一个非常基本的应用程序,它连接到 ( 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 中做到这一点,但是有没有一个红宝石宝石可以做到这一点?如果是这样,它是如何使用的?

4

1 回答 1

0

您可以使用 JQuery 库。ajaxify 的东西。

本教程讲述如何安装它http://www.w3schools.com/jquery/jquery_install.asp 然后使用 jQuery.get() 函数http://api.jquery.com/jQuery.getJSON/对表单提交进行 ajaxify。另外,请注意 flash.now 不适用于 ajax 请求。

于 2013-09-16T09:27:45.087 回答