这是使用Rails 3.0.10和HAML 3.1.3,虽然在ERB部分中使用相同的逻辑时这也是一个问题。
我有一个非常奇怪的情况,我的代码在开发模式下按预期工作,但在生产模式下死机严重。
我有一个部分:
- @emails.group_by(&:day).each do |day, email|
- email.each do |msg|
=message_content_for_link(msg) do |content| #loops here in production
=link_to content, "#/email/#{msg.id}", :id => "message_#{msg.id}", :class => cycle('even', 'odd') + ' view_message'
message_content_for_link在帮助器中定义:
def message_content_for_link(msg, &block)
content = msg.is_read ? [content_tag(:span, '', :class => 'read')] : [content_tag(:span)]
content << content_tag(:p, h(msg.from), :class => 'from')
content << content_tag(:p, truncate(h(msg.subject)), :class => 'subject')
block.call content.join('').html_safe
end
在开发模式中,上述工作正常。在生产中,当代码循环= message_content_for_link(msg)do | content |时,它会死得很厉害直到服务器的内存耗尽。
我在ERB中重写了上述内容,但效果完全相同。
<% @emails.group_by(&:day).each do |day, email| %>
<% email.each do |msg| -%>
<%= message_content_for_link(msg) do |content| %>
<%= link_to content, "#/email/#{msg.id}", :id => "message_#{msg.id}", :class => cycle('even', 'odd') + ' view_message' %>
<% end -%>
<% end -%>
<% end -%>
我有一种感觉,我错过了一些非常明显的东西。我或者这是一个错误吗?对解决方法有什么建议吗?
再次感谢任何建议,线索或提示。
编辑:这不是HAML问题,等效的ERB代码有同样的问题。
答案 0 :(得分:0)
您可能会将“content”用作局部变量和param吗?尝试重命名其中一个,以确保它们之间绝对没有混淆。