В моем приложении рельсы У меня есть вспомогательные функции:Действительно умный помощник рельсы нужен
def render_page(permalink)
page = Page.find_by_permalink(permalink)
content_tag(:h3, page.title) + inline_render(page.body)
end
Если бы я назвал страницу «дом» с:
<%= render_page :home %>
и тело «домашней» странице было :
<h1>Home<h1/>
bla bla
<%= render_page :about %>
<%= render_page :contact %>
Я хотел бы получить «домашнюю» страницу, с «о» и «контакт», это просто и красиво ... вплоть до того, где кто-то идет и меняет " домой содержание страницы», чтобы:
<h1>Home<h1/>
bla bla
<%= render_page :home %>
<%= render_page :about %>
<%= render_page :contact %>
, который приведет к бесконечному циклу (а неисправности сегмента на WEBrick) ...
Как бы я изменить функцию помощника к чему-то, что не попадет в этот ловушка?
Моя первая попытка была вдоль линий:
@@list = []
def render_page(permalink)
unless @@list.include?(permalink)
@@list += [ permalink ]
page = Page.find_by_permalink
result = content_tag(:h3, page.title) + inline_render(page.body)
@@list -= [ permalink ]
return result
else
content_tag :b, "this page is already being rendered"
end
end
, который работал на моей среде разработки, но разбомбили в производстве ...
любые предложения?
Спасибо
Стефан
Никогда не доверяйте переменным @@. – Matchu