gpt4 book ai didi

ruby-on-rails - Rails 脚注部分计数始终为零

转载 作者:行者123 更新时间:2023-12-02 05:26:33 25 4
gpt4 key购买 nike

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

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

我认为这无关紧要,但我使用的是 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

最佳答案

我有一个类似的问题,虽然我使用的是 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 返回一个 bool 值。为了解决这个问题,我创建了一个名为 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 中,然后重新启动您的应用程序。

关于ruby-on-rails - Rails 脚注部分计数始终为零,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12996166/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com