Rails在<%= insert之前忽略空格

时间:2013-08-27 13:05:25

标签: html ruby-on-rails erb

我喜欢我的观看源代码很干净但是任何时候我都使用<%= =>在忽略该标记之前标记空格。

.html.erb:.html.erb file

观看来源:Source

请注意,Yield,crfs_meta和stylesheet链接标记会忽略标记之前的空格。我使用标准的2个空格作为我的“标签”。对于Yield和我渲染局部图时,我可以只补偿删除的空格并将其放在局部空间中,但我不能对脚本和样式表标签这样做。有没有办法让我的空白?

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

1 个答案:

答案 0 :(得分: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"), "    ") %>