шаблон erb распечатать новую строку внутри оценки кода - PullRequest
0 голосов
/ 01 февраля 2019

шаблон puppet erb, который генерирует файл динамического содержимого:

<%
if @interfaces.count(',') > 0 then
  counter = 0
  @interfaces.split(',').each do |int|
  next if int == "lo"
  if has_variable?("ipaddress_#{int}")
    ip   = scope.lookupvar("ipaddress_#{int}")
    mask = scope.lookupvar("netmask_#{int}")
    cidr = scope.call_function('netmask_to_masklen',["#{mask}"])
    cidr_to_n = scope.call_function('cidr_to_network',["#{ip}/#{cidr}"])
    if ip =~ /192.168.0/
       x = ip
       $i1 = int
       $c_to_n1 = cidr_to_n
    else
       $y = ip
       $i2 = int
       $c_to_n2 = cidr_to_n
    end
  end
  end
end -%>
ip route add <%= $c_to_n1 %>/<%= $cidr %> dev <%=$i1%> src <%=$x%> table 192.168.0_RT
ip route add default via 192.168.0.1   dev <%=$i1%>        table 192.168.0_RT

ip route add <%= $c_to_n2 %>/<%= $cidr %> dev <%=$i2%> src <%=$y%> table 192.168.168_RT
ip route add default via 192.168.168.1   dev <%=$i2%>          table 192.168.168_RT
ip rule add from <%= $x %>/32   table 192.168.0_RT
ip rule add from <%= $y %>/32 table 192.168.168_RT

На данный момент код работает должным образом, однако, если я поставлю строки (ip route ...) между if / else всемпечатается на той же строке без разрыва строки.Поэтому главный вопрос - как сделать код более понятным:)

1 Ответ

0 голосов
/ 01 февраля 2019

Если я вас правильно понимаю, чтобы отобразить эти строки между блоком if, вам нужно добавить html-тег разрыва строки
, а затем пометить ваши строки как #html_safe или использовать помощник "#h" в представлении.

Например:

<% (1..4).each do |i| %>
  <% if i.even? %>
    <%= h "#{i} is even<br>" %>
  <% else %>
    <%= h "#{i} id odd<br>" %>
  <% end %>
<% end %>

Следует создать HTML, который будет выглядеть так:

1 is odd
2 is even
3 is odd
4 is even
...