2011-09-03 127 views
0

我遇到了一些問題,我認爲是我的緩存。無法將字符串轉換爲真

我收到此錯誤信息:

ListsUsersController# (ActionView::Template::Error) "can't convert true into String"

下面是代碼:

%footer 
    - cache "footer-movies-#{Time.now.hour.to_s}", expires_in: 2.days do 
    .foot-movies 
     %ul 
     - Movie.footer.each do |movie| 
      %li= link_to (image_tag movie.poster, size: "60x92"), movie_path(movie), title: movie.title 

它抱怨40行,這是一個包含.foot-movies行。

該代碼大部分時間都有效,但有時會引發此錯誤。 我在一段時間內沒有看到我的自我,但Exceptional告訴我,過去7天的錯誤已經增加了500多倍。

我使用:

  • HAML 3.1.2
  • 軌3.1
  • memcached的1.4.5
  • 達利1.0.5

Here是完整的堆棧跟蹤。

+0

一些注意事項:當使用插值字符串時,不要執行'to_s'。不要在您發佈的堆棧跟蹤中誤用括號'image_tag(movie.poster,size:「60x92」)' – phoet

+0

,它看起來像緩存返回true而不是字符串。你在別的地方使用相同的緩存鍵嗎? – phoet

回答

0

你有一個變量或方法沒有一個字符串,它只是'真',紅寶石不會將其轉換爲字符串。你必須找出它們中的哪一個,並確保它傳遞正確的值