我在我的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
答案 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中,然后重新启动应用程序。