2013-09-16 1 views
-1

У меня есть очень базовое приложение, которое подключается к API (http://is.gd), сокращая любой пользовательский URL. Вот текущий код, я должен сделать это (отлично работает в качестве статического запроса):Включите статический запрос в ajax, используя рубиновый камень?

# 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, но есть ли шанс, что это делает рубиновый камень? Если да, то как он используется?

+0

Обратите внимание, что флэш-сообщения 'flash.now' будут отображаться в текущем запросе. В моей реальной статической демонстрации у меня есть 'flash.next', за которой следует перенаправление на мою индексную страницу, где отображаются сообщения. Я предположил, что 'flash.now' будет использоваться в запросе AJAX. –

+2

Прочитайте учебник jquery. – 7stud

+0

Это не может быть сделано без основного решения, написанного в Javascript? –

ответ

0

Вы можете использовать JQuery lib. ааксифицировать материал.

В этом руководстве рассказывается, как установить его http://www.w3schools.com/jquery/jquery_install.asp Затем используйте функцию http://api.jquery.com/jQuery.getJSON/ jQuery.get(), чтобы ajaxify форма представить. Также обратите внимание, что flash.now не работает с запросами ajax.