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中,然后重新启动应用程序.
| 归档时间: |
|
| 查看次数: |
314 次 |
| 最近记录: |