2012-05-31 3 views
1

Как я понимаю, модами jquery отображаются во время загрузки страницы и запускаются пользователем с помощью скрытого = true для скрытого = ложного значения.По запросу модальный рендеринг?

Это прекрасное и денди и прекрасно работает, когда модальности хранятся на минимальной странице. Но, и вот мой вопрос, что, если у вас есть весь список модалов, когда при нажатии на него появляется модальная информация для редактирования. Скажем, например, сетку документов, и вы хотите щелкнуть по документу и иметь модальное всплывающее окно, чтобы просто отредактировать небольшой документ. Не приведет к тому, что все эти документы во время загрузки страницы замедлят работу пользователя. Разве нет способа загрузить и сделать этот модальный «по требованию».

Какова стандартная практика такого поведения.

Я знаю, что рельсы способ загружать новую страницу на документ, но мне очень любопытно посмотреть, как я могу это сделать.

Я отметил также толпу jQuery, так как эта библиотека является той, с которой я больше всего знаком.

+0

Сайт обмена опытом пользователей (http://ux.stackexchange.com/). Вероятно, это будет лучшее место, чтобы задать вопрос «стандартной практики». – RustyTheBoyRobot

+0

Поскольку я работаю под рельсами и хочу использовать тегированные технологии, я понял. но я спрошу там также спасибо. – TheIrishGuy

ответ

1

Я делаю это в своих приложениях. Это код для кнопки обратной связи в одном из моих приложений.

Он создает диалоговое окно, и когда кнопка нажата, содержимое диалога загружается динамически.

$(function() { 
    var button= $("#FeedbackButton"); 
    if (button.length == 0) 
     button= $("<div id='FeedbackButton'>Feedback</div>").hide().appendTo("body"); 


    var dialog = $("#FeedbackDialog"); 
    if (dialog.length == 0) 
     dialog = $("<div id='FeedbackDialog'>Feedback</div>").hide().appendTo("body"); 

    button.click(function() { 
     button.hide(); 
     dialog.load("_FeedbackDialog.htm"); 
     $(dialog).dialog({ 
      title: "Feedback", 
      modal: true, 
      width: 800, 
      height: 300, 
      close: function() { 
       $(button).show(); 
      } 
     }); 
    }); 
}); 
+0

Мне это нравится, но вопрос. что бы выглядел ваш код вида в соответствии с кодом button.click, в основном, как вы связываете это с вашим видом. или что вызывает его. – TheIrishGuy

+0

О, это просто щелчок на кнопке. Я удалил код, в котором я создал кнопку, потому что это было неважно (или так я думал). Мой сценарий должен был запускаться один раз на любой странице и создавать все функции обратной связи, включая добавление кнопки. Я добавлю его туда. Однако, поскольку это загружает код, это будет просто привязываться к любой кнопке, которая вам нравится. Это никоим образом не является конкретным. –

+0

Хорошо, что вы создаете кнопку динамически, вы показали мне ее возможность, и я думаю, что я получил ее суть, чтобы она работала с несколькими кнопками/ссылками на одной странице. Спасибо – TheIrishGuy

1

Посредством рендеринга модального запроса, я предполагаю, что вы имеете в виду ответ на запрос AJAX. В этом случае да, есть способ построить модальный по требованию. Что вам нужно сделать, так это настроить прослушиватель событий, который выполняет вызов AJAX для вашего контроллера.

# my_view.html 
/* inside JS event trigger */ 
$.get("/get_modal.js") 

Затем в вашем контроллере ответьте на этот вызов AJAX.

# my_controller.rb 
def get_modal 
    respond_to do |format| 
    format.js # this will execute get_modal.js (or get_modal.js.erb) 
    end 
end 

Ваше «мнение», однако, не будет HTML, это будет JS, который дает вам свободу делать все, что хотите.

# get_modal.js 
/* JS modal code */ 
+0

Я тоже с вами и как этот подход, но как бы вы запускали $ .get ("/ xxxx") внутри рельсов .html.erb? – TheIrishGuy

+0

Обработайте файл .html.erb так же, как и любой .html-файл, и добавьте тег '