使用参数产生的ActionView助手。适用于开发模式,但不适用于生产

时间:2011-11-10 19:13:12

标签: ruby-on-rails ruby-on-rails-3

这是使用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代码有同样的问题。

1 个答案:

答案 0 :(得分:0)

您可能会将“content”用作局部变量和param吗?尝试重命名其中一个,以确保它们之间绝对没有混淆。