вторник, октября 03, 2006

Inline layouts

В Rails уже давно есть возможность брать контент экшена не из файла, а передовать его в строке. Таким образом легко сделать простой CMS: берем шаблон из базы и делаем render :inline => . Проблема же построения более менее пригодного CMS заключалась в том, что подобную операцию нельзя было провести с лэйаутами.

Недавно я написал маленький плагин - Nested layouts (http://nested-layouts.rubyforge.org). Я решил, что возможность использования inline лэйаутов будет полезной добавкой к нему.

<% inside_inline_layout @layout_template do %>
content
<% end %>

Так что, кому надо - берите, пользуйте, пишите впечатления.

понедельник, октября 02, 2006

IF/UNLESS блоки в RJS шаблонах

Недавние занятия программированием с Ajax в Rails привели к созданию патча для поддержки создания IF блоков в javascript'е. Основная идея (помимо условий в виде строк) - поддержка элемент-прокси:

page.if page['element_id'].visible do
page['element_id'].hide
end

Проблема в том, что page['element_id'].visible сгенерит код до того, как будет обернуто в IF блок.
Также можно использовать более традиционные методы:

page.unless "$('element_id').visible()" do
page['element_id'].show
end

Патч был отклонен в core, но было предложено сделать плангин для обкатки.

Собственно, вот и он: http://rubyforge.org/projects/js-if-blocks. Инсталировать можно так:

./script/plugin install svn://rubyforge.org/var/svn/js-if-blocks/trunk/js-if-blocks

Тепрь думаю о добавлении возможности повторного использования proxy объектов, например:

element = page['element_id]
page.if element.visible do
element.hide
end