2018年1月16日火曜日

Sinatra の erb で trim_mode を使う方法

概要

タイトルの通りです
使い方がよくわからなかったのですが判明したので紹介します

環境

  • macOS 10.13.2
  • Ruby 2.4.1p111
  • Sinatra 2.0.0

trim_mode を使った場合

  • vim views/hoge.erb
<a>
  <%- ['a','b','c'].each do |i| -%>
  <hoge><%= i %></hoge>
  <%- end -%>
</a>
  • vim app.rb
require 'sinatra'

get '/' do
  erb :hoge, :trim => '-'
end

結果は以下のようになります

<a>
  <hoge>a</hoge>
  <hoge>b</hoge>
  <hoge>c</hoge>
</a>

ちゃんと 1 行ずつ改行されて表示されています
行末を -%> にすることで改行が無視されます
先頭を <%- にすることでインデントがなくなります

trim_mode を使わない場合

  • vim views/fuga.erb
<a>
  <% ['a','b','c'].each do |i| %>
  <hoge><%= i %></hoge>
  <% end %>
</a>
  • vim app.rb
require 'sinatra'

get '/' do
  erb :hoge
end

こんな感じで改行が trim されずに表示されてしまいます

<a>

  <hoge>a</hoge>

  <hoge>b</hoge>

  <hoge>c</hoge>

</a>

trim を使うタイミング erb 内でスペースやインデントを使用する場合かなと思います
erb で表示する内容がすべて先頭から始まる内容であればわざわざ改行する必要はありません

0 件のコメント:

コメントを投稿