3

我喜欢我的视图源代码干净整洁,但任何时候我使用 <%= => 标记时都会忽略该标记之前的空白。

.html.erb:.html.erb 文件

查看源代码:来源

请注意,Yield、crfs_meta 和样式表链接标记忽略标记前的空格。我使用标准的 2 个空格作为我的“标签”。对于产量,当我渲染部分时,我可以补偿删除的空白并将其放入部分中,但对于脚本和样式表标签我不能这样做。有没有办法让我保留我的空白???

我刚刚意识到布局和产量的渲染标签保留了前一行的空白(4 个选项卡,渲染在 6 个选项卡上),但是在该布局内,我必须将第一行放在 0 选项卡,然后将下一行放在 4选项卡,使其在 6 个选项卡处内联...

4

1 回答 1

2

问题并不<%=像您的编辑所暗示的那样。这是因为您在<%= ... %>块中调用的方法正在生成更多的输出行,而这些后续行不尊重您的缩进。

据我所知,没有真正巧妙的方法来解决它。您可以用正确的缩进替换这些方法的输出中的任何换行符,但随后您将代码中的可读性换成输出中的可读性。

例如,类似:

<%= csrf_meta_tags.gsub("\n", "\n    ").html_safe %>

或者您可以编写一个辅助方法(在 application_helper.rb 中)来执行此操作:

def indent_output(output, indentation = "  ")
  output.gsub("\n", "\n" + indentation).html_safe
end

然后您的相关视图代码是:

<%= indent_output(csrf_meta_tags, "    ") %>
<%= indent_output(stylesheet_link_tag("bootstrap.min", "main"), "    ") %>
于 2013-08-27T13:26:31.673 回答