Получение правильного отступа с использованием XMLBuilder в помощнике - PullRequest
1 голос
/ 11 мая 2010

Я пытаюсь использовать помощник вида для создания динамических ссылок на основе того, вошли вы в систему или нет.

Что я хочу вернуть, для удобства чтения кода:

<ul class="right">
  <li><a href="#">Login</a></li>
  <li><a href="#">Register</a></li>
</ul>

В виде помощника у меня есть этот код Ruby:

def loginh
  xm = Builder::XmlMarkup.new(:indent=>2, :margin=>4)
  xm.ul("class" => "right") {
     xm.li('class' => 'text') { 
        xm.text("test") 
     }
  }
end

В представлении строка, которая вызывает помощника входа, уже имеет отступ с 4 уровнями. Из-за этого первая строка становится «перекошенной», поэтому в представлении, которое я имею:

        <%= loginh %>

Что приводит к:

                <ul class="right"> 
      <li class="text"> 
        <text>test</text> 
      </li> 
    </ul> 

Вы можете видеть, что он работает отлично, за исключением первой строки. Похоже, что на первую строку влияет отступ перед вызовом <% = loginh%>.

Я могу легко исправить это, удалив отступ до <% = loginh%> - но по сути я бы пожертвовал читаемостью кода для читабельности разметки. Это не то, что я хочу сделать.

Можно ли как-нибудь убрать начальный пробел?

1 Ответ

1 голос
/ 11 мая 2010

<% = loginh -%> - почти то, что вы хотите.

Хитрость - это знак минус в закрывающей части, который подавляет лишние пробелы.

В качестве альтернативы, вы можете передать вывод через HTMLTidy, используя backticks (символ `).

...