为了好看的代码,有没有办法在Ruby on Rails中的整个布局<%= yield %>
中添加间距选项卡?这就是我的意思:
:此:
# layout.html.erb
<body>
<%= yield %>
</body>
加上:
# page.html.erb
<h1>Test</h1>
<p>Hello, world!</p>
输出:
<body>
<h1>Test</h1>
<p>Hello, world!</p>
</body>
我真正想要输出的内容:
<body>
<h1>Test</h1>
<p>Hello, World!</p>
</body>
我做了一些研究,发现使用像<%= yield -%>
这样的减号删除缩进,但我找不到添加它的方法。有什么想法吗?
答案 0 :(得分:3)
这个怎么样?
# layout.html.erb
<body>
<%= yield.gsub(/^/, " ") %>
</body>
实际上,我在自己的库中有一个方法String#indent
,例如:
class String
def indent s = "\t"; gsub(/^/, s) end
end
使用它,您可以在不同的地方重复使用它。
# layout.html.erb
<body>
<%= yield.indent %>
</body>
答案 1 :(得分:0)
根据Sawa的回答,我发现了一种稍微灵活的缩进内容方法。虽然Sawa的上述方法运行得很好,但如果你在<%= yield %>
之前处理多个块级别,它就不会将你的产量代码推出足够的空间。
这是一个小的改进,可以根据具体需求进行定制:
class String
def indent(spaces)
num = (" " * spaces)
gsub(/^/, num)
end
end
现在,您可以在布局中指定缩小的缩进空间,如下所示:
# layout.html.erb
<body>
<div class="content">
<%= yield.indent(4) -%>
</div>
</body>
上面的示例将为您的每个产量线应用4个缩进空格。如果有另一个级别,你可以将它改为6,依此类推......