2

我在我的Rails 3.2應用程序中使用了rails-footnotes gem,但我似乎無法獲得腳註來註冊任何partials的存在:它始終顯示零部分計數。爲了能夠很容易地知道在視圖上顯示了多少個部分和哪些部分,我認爲這非常有用,所以我真的很想讓這個工作起作用(其餘的工作很好),但是,我不知道問題是什麼,希望別人有同樣的問題,並能解決問題。有沒有我可能錯過的設置?Rails腳註partials count始終爲零

我不認爲它是相關的,但我使用的是OSX 10.6.8,並且有一些問題讓gem能夠正確使用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 

回答

5

我也有類似的問題,雖然我使用ERB模板,不HAML。我用一個猴子補丁修正了它的軌道腳註。

望着鐵軌,腳註代碼(版本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 

如果你想嘗試的解決方案,把該文件中的配置/初始化,然後重新啓動應用程序。

+0

太棒了!這對我來說很有效,儘管我沒有使用一個單獨的初始化文件,而是將代碼放在我的** rails_footnotes.rb **文件中,並調用了腳註。我將編輯我的問題以添加該信息,但我接受您的答案,非常感謝! –

+0

很高興爲您解決。感謝關於將代碼放入rails_footnotes.rb的建議。這似乎是一個更好的位置,我也會這樣做。 –

+0

這似乎也適用於SLIM模板,但它只顯示'_vocabulary'部分,而不是'_vocabularies'部分(呈現_vocabulary部分)。 –