【问题标题】:Rails Footnotes partials count is always zeroRails脚注部分计数始终为零
【发布时间】:2012-10-21 08:22:32
【问题描述】:

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

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

我认为这无关紧要,但我使用的是 OSX 10.6.8,并且在让 gem 与 Sublime Text 2 一起正常工作时遇到了一些问题,但它们确实得到了解决(详情见 this StackOverflow answer)。

更新

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

更新 2

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

config/initializers/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 

【问题讨论】:

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


    【解决方案1】:

    我遇到了类似的问题,虽然我使用的是 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,然后重新启动您的应用程序。

    【讨论】:

    • 太棒了!这对我有用,尽管我没有将您的代码放在我的 rails_footnotes.rb 文件中,而不是单独的初始化文件,而是在对 Footnotes.run! 的调用下。我将编辑我的问题以添加该信息,但我接受您的回答,非常感谢!
    • 很高兴它为您解决了问题。感谢有关将代码放入 rails_footnotes.rb 的建议。这似乎是一个更好的位置,我也会这样做。
    • 这似乎部分适用于 SLIM 模板,但它只显示 _vocabulary 部分,而不是 _vocabularies 部分(呈现 _vocabulary 部分)。
    猜你喜欢
    • 2014-03-22
    • 1970-01-01
    • 1970-01-01
    • 2011-02-07
    • 2019-01-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多