【问题标题】:Turn a static request into ajax using a ruby gem?使用红宝石宝石将静态请求转换为ajax?
【发布时间】: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


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2019-08-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多