ERB: встраиваемый Ruby-шаблонизатор для удобной разработки веб-приложений

ERB (Embedded Ruby) является шаблонизатором для языка Ruby. Он позволяет встраивать Ruby код в HTML, CSS, JavaScript и другие языки разметки.

Пример кода на ERB:

html


  
    <%= @title %>
  
  
    

Welcome, <%= @name %>!

<% if @time == "morning" %>

Good morning!

<% else %>

Good evening!

<% end %>

Здесь мы используем тег `<%=` для вставки значения переменных `@title` и `@name` в тег ``</b> и текст <b>`<h1>`</b> соответственно. Тег <b>`<% if %>`</b> и <b>`<% else %>`</b> используются для конструкции условия, в зависимости от переменной <b>`@time`</b> выводится разный текст.</p><p>Перед использованием ERB необходимо создать объект <b>`ERB`</b>, который будет обрабатывать шаблон. Для этого можно использовать следующий код:</p><pre><code class="line-numbers">ruby require 'erb' template = ERB.new(File.read('template.erb')) result = template.result(binding) </code></pre> <p></code></pre></p><p>Здесь мы считываем содержимое файла <b>`template.erb`</b> и создаем объект класса <b>`ERB`</b>. Далее мы вызываем метод <b>`result`</b>, который принимает объект <b>`Binding`</b>, содержащий переменные, используемые в шаблоне.</p><p>Пример создания объекта <b>`Binding`</b>:</p><pre><code class="line-numbers">ruby @title = "My Website" @name = "John" @time = Time.now.hour < 12 ? "morning" : "evening" binding = binding() </code></pre> <p></code></pre></p><p>Здесь мы создаем переменные <b>`@title`</b>, <b>`@name`</b> и <b>`@time`</b>. Затем мы вызываем метод <b>`binding`</b>, который создает объект <b>`Binding`</b>, содержащий эти переменные.</p><p>ERB также позволяет использовать циклы и другие конструкции языка Ruby в шаблонах. Например:</p><pre><code class="line-numbers">html <ul> <% @items.each do |item| %> <li><%= item %></li> <% end %> </ul> </code></pre> <p></code></pre></p><p>Здесь мы используем цикл <b>`each`</b> для вывода элементов массива <b>`@items`</b> в виде списка <b>`<ul>`</b>. Тег <b>`<% end %>`</b> используется для завершения блока <b>`do`</b>.</p><p>ERB является мощным инструментом для создания динамически генерируемых страниц и приложений в Ruby.</p> </article> <!-- Yandex.RTB R-A-2915728-1 --> <div id="yandex_rtb_R-A-2915728-1"></div> <script>window.yaContextCb.push(()=>{ Ya.Context.AdvManager.render({ "blockId": "R-A-2915728-1", "renderTo": "yandex_rtb_R-A-2915728-1" }) }) </script> <h2 class="uk-margin-small-bottom uk-text-default ">Похожие вопросы на: "erb "</h2> <div class="uk-column-1-1@s uk-column-1-2@m uk-column-1-2@l"> <div><a class="uk-text-meta" href="/icons-bootstrap">Иконки Bootstrap: основы и лучшие практики использования</a></div> <div><a class="uk-text-meta" href="/internal-c">Internal C – язык программирования для разработки операционных систем</a></div> <div><a class="uk-text-meta" href="/php-fopen">Функция fopen в PHP: работа с файлами</a></div> <div><a class="uk-text-meta" href="/psql-komandi">Список PSQL команд для управления PostgreSQL</a></div> <div><a class="uk-text-meta" href="/generator-python">Генератор Python: создавайте простые и сложные конструкции с легкостью</a></div> <div><a class="uk-text-meta" href="/random-piton">Генерация случайных данных с Рандом Питон</a></div> <div><a class="uk-text-meta" href="/if-matlab">If Matlab: основы программирования на языке MATLAB</a></div> <div><a class="uk-text-meta" href="/visual-studio-code-vs-visual-studio">Visual Studio Code vs Visual Studio: Which One is Right for You?</a></div> <div><a class="uk-text-meta" href="/skachat-anaconda"><h1>Скачать Anaconda</a></div> <div><a class="uk-text-meta" href="/php-kolichestvo-simvolov-v-stroke">PHP количество символов в строке</a></div> </div> <script> // hljs.highlightAll(); document.addEventListener("DOMContentLoaded", function() { hljs.highlightAll(); hljs.initLineNumbersOnLoad(); }); </script> </div> <footer class="uk-section uk-section-secondary uk-section-xsmall uk-margin-medium-top"> <div class="uk-container uk-container-small"> <div class="uk-text-meta">Сайт предоставляет чисто информационный контент, мы не храним ваши персональные данные.</div> <div class="uk-text-meta">Все ответы созданы ИИ в связи с этим могут быть не точности =)</div> </div> </footer> </body> </html>