html - Rails 在 <%= 插入之前忽略空格

标签 html ruby-on-rails erb

我希望我的查看源代码干净整洁,但每当我使用 <%= => 标签时,该标签之前的空格都会被忽略。

.html.erb: .html.erb file

查看来源:Source

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

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

最佳答案

问题不在于 <%=正如您的编辑建议的那样。这是因为您在 <%= ... %> 中调用的方法 block 正在生成更多行的输出,而那些后续行不尊重您的缩进。

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

例如,像这样的东西:

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

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

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

然后你的相关 View 代码是:

<%= indent_output(csrf_meta_tags, "    ") %>
<%= indent_output(stylesheet_link_tag("bootstrap.min", "main"), "    ") %>

关于html - Rails 在 <%= 插入之前忽略空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18466302/

相关文章:

html - rails : load table cells two across at a time

javascript - 通过 Javascript 动态渲染 AlloyUI Modal body HTML

ruby-on-rails - 如何在erb中编写while循环

php - URL - 获取 PHP 的最后一部分

mysql - #<ActiveRecord::ConnectionAdapters::MysqlAdapter 的未定义方法 `explain'

ruby-on-rails - rails : Creating Wrong Table Name With a Namespaced STI

ruby-on-rails - 如何配置 Fine Uploader 以发出与 Rails 兼容的请求?

ruby-on-rails - 带测试的 HAML 换行问题

html - 如何在我的文档中对 DIV 进行分组以便我可以将 CSS 应用于它们?

html - 在 IE 中如何设置表格中的单元格高度以填充窗口?