2013-03-18 2 views
1

Только что начал работать на сервере Rails/HAML, который использует Bootstrap и JQuery на передней панели. Все страницы создаются на стороне сервера (HAML), а затем мы используем JQuery здесь и там, чтобы дать ощущение Web 2.0, когда пользователи выполняют действия.Rails, HAML и JQuery

У нас есть несколько мест, в которых создается сложный html в javascript после того, как мы сделаем вызов AJAX для получения данных с сервера. И.Е. в случае, если у нас есть таблица, пользователи могут выполнять действия в строках таблицы. Одним из таких действий является удаление строки из таблицы и вытягивание другой строки. В случае выталкивания в другую строку мы получаем данные JSON с сервера и в результате успеха AJAX мы используем данные JSON для генерации новой строки (HTML) и анимации ее в таблицу.

Моя проблема заключается в том, что строки таблицы довольно сложны и сгенерированы в двух местах: сервере (HAML) и в javascript. Это означает, что каждый раз, когда я хочу немного изменить таблицу (добавьте класс css или измените способ отображения строки) Мне нужно изменить код в двух местах: сервере и клиенте.

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

Думать, что лучший способ - всегда генерировать HTML-код. И.Е. вместо того, чтобы возвращать данные JSON, когда мне нужно добавить новую строку, верните HTML для новой строки. Таким образом, я могу использовать одну и ту же файловую серверную часть HAML для генерации начальных строк и любых новых строк.

Это все очень ново для меня, это лучший/единственный способ?

Заранее спасибо.

+0

Вы либо делать то, что вы делаете, генерировать HTML на сервере, используйте шаблонный движок, или создать функцию для создания строк для вас. – Ohgodwhy

+0

Я нахожу * * намного проще визуализировать HTML на сервере и передавать его с помощью $ .html() ', чем для рендеринга его из json. http://stackoverflow.com/questions/15399229/ajax-with-ruby-on-rails-simple-view-refresh/15399379#15399379 иллюстрирует эту технику. – bdares

ответ

0

Лучшим способом, который я нашел, является создание части сервера частичных данных haml и возврат.

haml :some_partial, :layout => false 

Тогда в Jquery успеха:

function(data) { 
    html = $(data); 
    ... 
} 
Смежные вопросы