Rails Footnotes partials count始终为零

Pau*_*nti 2 debugging ruby-on-rails footnotes ruby-on-rails-3 ruby-on-rails-3.2

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

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

我不认为这是相关的,但我使用的是OSX 10.6.8并且在使用宝石与Sublime Text 2正常工作时遇到了一些问题,但它们确实得到了解决(详见StackOverflow的答案).

更新:

似乎问题只存在于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 
Run Code Online (Sandbox Code Playgroud)

小智 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
Run Code Online (Sandbox Code Playgroud)

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
Run Code Online (Sandbox Code Playgroud)

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