【发布时间】:2013-09-20 07:44:35
【问题描述】:
我有一个非常基本的应用程序,它与 (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 中做到这一点,但是有没有一个红宝石宝石可以做到这一点?如果有,它是如何使用的?
【问题讨论】:
-
请注意,闪现消息
flash.now将显示在当前请求中。在我的实际静态演示中,我有flash.next,然后重定向到我的索引页面,然后显示消息。我假设flash.now将用于 AJAX 请求。 -
阅读 jquery 教程。
-
如果没有用 Javascript 编写大部分解决方案就无法完成?
-
ajax = a同步 javascript xmlhttprequest.注意中间的词。
-
或多或少指的是为我处理 js @7stud 的 ruby gem,但不管你的船是什么。
标签: ruby-on-rails ruby ajax sinatra open-uri