2013-07-25 12 views
2

我正在學習Spree電子商務。雖然我以Spree爲例,但我認爲它在其他地方也很有用。Ruby on Rails - 調試目的 - 將文件名(部分/視圖)添加到HTML輸出

在大禮包中,我們有許多視圖由admin部分定義。如果您知道需要覆蓋哪個視圖,則可以通過Deface寶石覆蓋它們。除了Deface之外,您可以簡單地放置一個具有相同路徑的物理文件,Rails將使用它而不是由Gem提供的文件。

無論哪種方式,您都需要知道需要覆蓋哪個視圖。

當你看一個頁面/視圖時,你有許多小的部分,使整個頁面。

我的興趣是,有沒有辦法找到哪個部分是由哪個部分創建的。

例如,一些事情,如:

<!-- /route/to/view.html.erb --> 
<div id="something"> 
    <!-- other html --> 
</div> 
<!-- end of /route/to/view.html.erb --> 

我希望你有我的觀點,一些製造商知道這是由特定視圖/分產生的特定HTML代碼段。

所以這樣,我可以很容易地知道/調試。

謝謝,

欣賞任何幫助,你可以給。

回答

2

你應該嘗試xray,我用它與施普雷,它工作正常。

1

xray很好,但有點「大聲」。我用這個片段在我rails3.2應用:https://gist.github.com/phoet/1386152

if Rails.env.development? 
    module ActionView 
    class PartialRenderer 
     alias_method :rails_render, :render 

     def render(context, options, block) 
     msg = "rendering '#{options[:partial]}' with locals '#{(options[:locals] || {}).keys}'" 
     "<!-- start #{msg}-->\n#{rails_render(context, options, block)}\n<!-- end #{msg}-->\n".html_safe 
     end 
    end 
    end 
end 
+2

雖然此鏈接可能會回答問題,但最好在此處包含答案的重要部分並提供供參考的鏈接。如果鏈接頁面更改,則僅鏈接答案可能會失效。 –

+0

我不喜歡複製代碼。感覺我錯了,所以我不斷髮布鏈接。 – phoet

+0

我認爲這足夠清楚:「鏈接的答案可能會失效,如果鏈接的頁面更改」。這裏有關於SO的規則,這不是品味的問題。 –

0

使用這種寶石'current_template'

它從log/development.log文件中獲取當前模板的名稱(部分)。

+0

或 只需添加 '''<%=「#{'tail log/development.log'}」。scan(/ \ s [az] + \/\ S + /) %>''' 到你的layout/application.html.erb。 – kansiho