Rails Footnotes partials count始终为零

时间:2012-10-21 08:22:32

标签: ruby-on-rails ruby-on-rails-3 debugging ruby-on-rails-3.2 footnotes

我在我的Rails 3.2应用程序中使用rails-footnotes gem,但我似乎无法通过脚注来记录任何部分的存在:它总是显示零部分计数。

为了能够很容易地知道在视图上显示多少和哪些部分,我认为这非常有用,所以我真的很想让它工作(其余的工作很棒),但我是不确定问题是什么,我希望其他人有同样的问题,并能够解决它。有没有我可能错过的设置?

我不认为它是相关的,但是我使用的是OSX 10.6.8并且在使用宝石与Sublime Text 2正常工作时遇到了一些问题,但它们确实得到了解决(this StackOverflow answer中的详细信息)。

更新

似乎问题只存在于haml模板中,因为我得到了erb模板的预期输出。似乎只有erb模板被计算/识别......?

更新2

下面的@DonHopkins答案让我所有的Haml模板都注册了Rails脚注。我把它放在我的配置文件中,如下所示:

配置/初始化/ rails_footnotes.rb

if defined?(Footnotes) && Rails.env.development?
  Footnotes.run! # first of all
  Footnotes::Notes::LogNote::LoggingExtensions.module_eval do
    def add(*args, &block)
      super
      logged_message = args[2] + "\n"
      Footnotes::Notes::LogNote.log(logged_message)
      logged_message
    end
  end

  # ... other init code
  Footnotes::Filter.prefix = 'subl://open?url=file://%s&line=%d&column=%d'
end 

1 个答案:

答案 0 :(得分:5)

我有类似的问题,虽然我使用的是erb模板,而不是haml。我用一个猴子补丁修复它到rails-footnotes。

查看rails-footnotes代码(版本3.7.9),它在我看来问题就在于这个方法:

module Footnotes
  module Notes
    class LogNote < AbstractNote
      ...
      module LoggingExtensions
        def add(*args, &block)
          logged_message = super
          Footnotes::Notes::LogNote.log(logged_message)
          logged_message
        end
      end
      ...
    end
  end
end

add方法假设super返回正在记录的消息,但在我的测试super中返回了一个布尔值。为了解决这个问题,我创建了一个名为footnotes_patch.rb的文件,其中包含以下内容:

Footnotes::Notes::LogNote::LoggingExtensions.module_eval do
  def add(*args, &block)
    super
    logged_message = args[2] + "\n"
    Footnotes::Notes::LogNote.log(logged_message)
    logged_message
  end
end

如果您想尝试解决方案,请将该文件放在config / initializers中,然后重新启动应用程序。