使用ruby gem将静态请求转换为ajax?

时间:2013-09-16 08:15:53

标签: ruby-on-rails ruby ajax sinatra open-uri

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

1 个答案:

答案 0 :(得分:0)

您可以使用JQuery lib。把这些东西弄糊涂。

本教程介绍如何安装http://www.w3schools.com/jquery/jquery_install.asp 然后使用jQuery.get()函数http://api.jquery.com/jQuery.getJSON/来表示提交表单。另请注意,flash.now不能使用ajax请求。