我使用的应用程序有点复杂,不是我设计的。由于它使用了很多部分,如果每次呈现新的erb/rhtml文件时我都能自动添加一个html模板,那将非常有帮助。
所以对于exmaple,如果代码有这个:
<%= render(:partial => 'personal_details', :object => @auser) %>
ouput-html添加了一些类似的内容:
<!-- Rendering: views/users/_personal_details.rhtml called from other_file.rhtml -->
如何完成?
首先,您是否已经使用xray rails来可视化您的部分?这是一个非常有用的工具。
如果您需要更多的东西,请查看xrayrails源代码中的一些指针。从本质上讲,您需要做的是monkey补丁ActionView::Template#render
,如下所示。
总结:
ActionView::Template.class_eval do
def render_with_prepend_comment(*args, &block)
# Defer to original implementation to do the actual render
source = render_without_prepend_comment(*args, &block)
# Then augment it as desired
"<!-- prepended comment -->n" + source
end
alias_method_chain :render, :prepend_comment
end
它还有更多;看看xrayrails是如何增强的。
这个gem声称支持您想要的功能。
Rails>=6.1包含一个名为annotate_rendered_view_with_filenames
的ActionView选项,用于确定是否使用模板文件名对渲染视图进行注释。默认为false
。
在您的情况下,您可能希望将以下内容添加到development.rb
配置文件中:
# Annotate rendered view with file names.
config.action_view.annotate_rendered_view_with_filenames = true
这会导致注释类似于您渲染的HTML:中的注释
<!-- BEGIN app/views/layouts/partials/_header.html.erb -->
<header></header>
<!-- END app/views/layouts/partials/_header.html.erb -->
这是指南中的描述,这是Rails本身的实现。