2011-08-26 2 views
0

У меня есть сценарий, где мне нужно показать предварительный просмотр формы в новом окне.call rails action from javascript

Я зациклился на том, как вызвать предварительный просмотр рельсов из функции javascript и как запустить новое окно для этого действия.

Вот код:

click preview link code: 

<%= link_to_function "#{image_tag('preview.png', :alt=>'Preview', :title=>'See a preview')} 
<span class='text'>Preview</span>", 
"javascript:show_form()" %> 

javascript function: 

function show_form() { 
    //grab the dom 
     var html = $('#newform').clone(); 
    //whats next here????? 
} 

rails action: 

def preview 
    @html = params[:html] 
end 

Мой вопрос:

  • Как назвать рельсы действия предварительного просмотра?
  • как я могу запустить новое окно с предварительным просмотром для этого действия?

спасибо за вашу помощь

Edit: 

Я могу размещать данные с помощью $ .post ('/ URL') с JQuery. Однако представление не отображается. Я вижу, что вызов вызывается (отладка попадает в точку останова), но браузер не отображает его. Есть ли что-нибудь, что мне нужно сделать в методе .post() для перехода на новый URL-адрес?

+0

Вам необходимо настроить маршрут в Rails, который соответствует действию предварительного просмотра, и вызвать в нем вызов AJAX в show_form(). – cmpolis

+0

Я могу отправлять данные с помощью $ .post ('/ url') из jquery. – truthSeekr

ответ

3

Поскольку вы используете JQuery, вы можете также использовать его библиотеки AJAX: http://api.jquery.com/category/ajax/

В большинстве случаев использование $.get() или $.post() достаточно. Вы можете использовать $.ajax() для большей гибкости, за счет необходимости набирать больше опций.

В основном ваша цель - вызвать URL-адрес, который соответствует соответствующему действию контроллера. Это действие должно возвращать представление с соответствующим HTML, XML или JSON. Если он просто возвращает HTML для формы, вы можете использовать jQuery для результата, чтобы получить соответствующие значения и сделать то, что вам нужно сделать с ними.

EDIT:

Вызовы AJAX принимают функцию обратного вызова успеха, что вы можете обеспечить, чтобы на самом деле визуализации формы.

Пример:

$.post('/url', function (data) { 
    $('#myForm').html(data); // this would simply inject the returned HTML into the form 
}); 

EDIT (опять же):

Просто перечитайте свой вопрос. Кажется, вы пытаетесь сделать все в новом окне? Предполагая, что ваше представление отображает весь блок HTML (с DOCTYPE и <html>), вы можете использовать window.open и просто указать URL-адрес. В этом случае вам не нужен AJAX.

+0

Спасибо. Сообщение, похоже, работает в публикации успешно, но представление не отображается. Я уточню свой вопрос с подробностями. Благодарю. – truthSeekr

+1

См. Править выше. –

+0

благодарит за вашу помощь – truthSeekr