2011-11-10 70 views
1

這是使用Rails 3.0.10和HAML 3.1.3,但在ERB部分使用相同的邏輯時,這也是一個問題。使用參數產生ActionView幫助器。在開發模式下工作,但不是生產

我有一個非常奇怪的情況,我的代碼在開發模式下按預期工作,但在生產模式下死亡嚴重。

我具有部分:

- @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

你確定你不只是在生產中有很多電子郵件嗎? – Satya

回答

0

可能是因爲你使用「內容」作爲局部變量和參數?嘗試重命名其中之一,以確保它們之間完全沒有混淆。

相關問題