Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 在RubyonRails中缩进整个输出2个空格?_Ruby On Rails_Ruby_Formatting - Fatal编程技术网

Ruby on rails 在RubyonRails中缩进整个输出2个空格?

Ruby on rails 在RubyonRails中缩进整个输出2个空格?,ruby-on-rails,ruby,formatting,Ruby On Rails,Ruby,Formatting,为了代码美观,有没有办法在RubyonRails中在整个布局中添加间隔选项卡?我的意思是: 这个: # layout.html.erb <body> <%= yield %> </body> # page.html.erb <h1>Test</h1> <p>Hello, world!</p> <body> <h1>Test</h1> <p>Hello,

为了代码美观,有没有办法在RubyonRails中在整个布局中添加间隔选项卡?我的意思是:

这个:

# 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>
#layout.html.erb
加上这个:

# 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>
#page.html.erb
试验
你好,世界

输出:

# 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>

试验
你好,世界

我真正想要输出的内容:

# 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>

试验
你好,世界

我做了一些研究,发现使用像
这样的减号可以删除缩进,但我找不到添加缩进的方法。有什么想法吗?

这个怎么样

# layout.html.erb
<body>
<%= yield.gsub(/^/, "  ") %>
</body>
使用它,您可以在不同的地方重用它

# layout.html.erb
<body>
<%= yield.indent %>
</body>
#layout.html.erb

根据Sawa的回答,我找到了一种更灵活的缩进内容的方法。虽然Sawa的上述方法工作得很好,但如果您在
之前处理多个块级别,则它不会挤出足够的代码空间

这里有一个可以根据特定需求定制的轻微改进:

class String
  def indent(spaces)
    num = (" " * spaces)
    gsub(/^/, num)
  end
end
现在,您可以从布局中指定需要多少缩进空间,如下所示:

# layout.html.erb
<body>
  <div class="content">
    <%= yield.indent(4) -%>
  </div>
</body>
#layout.html.erb

上面的例子将对屈服线的每一行应用4个空格的缩进。如果还有另一个关卡,你可以将它改为6,依此类推……

很好,成功了。在
layout.html.erb
中缩进产量,并将产量输出的第一行返回2个空格,是否仍有可能?如果执行
,会发生什么情况?我在
layout.html.erb
中的
中仍有2个空格的格式设置(这是我想要的),它在输出中增加了额外的2个空格的格式。我只是通过添加负号来修复它,就像我之前提到的:
。是的,就像你的编辑一样。谢谢:)如果您有多个嵌套级别,那么可以对每个调用级别使用
indent
方法。多次应用缩进的
indent
行将缩进多个级别。您不必手动控制深度。我的
indent
版本旨在将单级制表符序列作为可选参数(
“\t”
对于某些人,
对于其他人,等等),以满足不同的编码约定。