在我的Rails应用程序,我有一个辅助功能:一个真正聪明的轨道帮手需要
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 2010-03-07 21:02:18