rails,使render添加一个HTML注释的文件名被渲染用于开发



我使用的应用程序有点复杂,不是我设计的。由于它使用了很多部分,如果每次呈现新的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本身的实现。

最新更新