Тонкие шаблоны на Ruby on Rails, каковы лучшие практики

У меня проблемы с пониманием основного синтаксиса Slim.

Первый вопрос, как ввести новую строку (разрыв строки)?

Второй запрос, не могли бы вы переписать следующий фрагмент, я подозреваю, что я сделал это не так просто?

- provide(:title, @course.title)                                                                                                          

.row
  aside.span4
    section
      h1 = @course.title.capitalize

      => link_to t('ui.edit'), edit_course_path(@course)
      '|
      => link_to t('ui.back'), courses_path

      p
        b #{t('activerecord.attributes.subject.title')}:
        | #{@course.subject.title}

      p
        b #{t('activerecord.attributes.student_level.title')}:
        | #{@course.student_level.title}

      h4 #{t('activerecord.attributes.course.objectives')}
      = @course.objectives

Это его вывод:

Название а

тахрирлаш (править) | оркага

Predmet nomi: английский для детей 5–7 лет.

Окувчи дараджаси: новичок

Курс хакида малумот

цели б


person B.I.    schedule 18.09.2013    source источник


Ответы (3)


Для новой строки вы должны просто использовать br, например:

h1 Line1 content
br
h1 Line2 content

А что касается вышеупомянутого кода, то его можно переписать так:

-provide(:title,@course.title)                                                    
.row
  aside.span4
    section
      h1 = @course.title.capitalize

      = link_to t('ui.edit'), edit_course_path(@course)
      '|
      = link_to t('ui.back'), courses_path

      p
        b = t('activerecord.attributes.subject.title')
        |:     
        = @course.subject.title

      p
        b = t('activerecord.attributes.student_level.title')
        |: 
        = @course.student_level.title

      h4 = t('activerecord.attributes.course.objectives')
      = @course.objectives
person Aman Garg    schedule 18.09.2013
comment
Похоже, что Slim не поддерживает однострочные теги ‹br› без разрыва на новые элементы. В приведенном выше примере от Aman Garg используется новый тег ‹h1›. Alt: было бы сделать что-то вроде h1 content<br> content, если вы хотите, чтобы это было в той же строке. - person arxpoetica; 20.12.2013
comment
Проголосовали против, потому что $/ значительно лучше. Смотрите мой ответ по причинам. - person Steve Benner; 10.07.2020

Чтобы вставить тег br в какой-либо тег в slim:

Пример 1. Тонкий шаблон:

h1
  | Hello
  br
  | world

Он выдаст html:

<h1>Hello<br>world</h1>

Пример 2. Фрагмент тонкого шаблона для отображения формы:

p
  = f.label :title
  br
  = f.text_field :title

Он выдаст html:

<p>
  <label for="question_title">Title</label><br>
  <input name="question[title]" id="question_title" type="text">
</p>
person yesnik    schedule 11.06.2017

Я должен не согласиться с этим. Вместо этого я всегда использовал $/ по нескольким причинам:

  • Тег br устарел и становится менее предпочтительным из-за возможности пограничных случаев, вызывающих проблемы. По сравнению с этим использование $/ не имеет последствий.
  • Он не полностью стандартизирован, и уже есть случаи, когда это вызывало проблемы (google).
  • Фактическая спецификация W3 определяет довольно очень конкретные варианты использования и условия для этого тега. Откровенно говоря, нам не нужно слишком много думать или прыгать через обручи, чтобы отобразить разрыв строки в выводе HTML - это мое мнение!
  • Наконец, я нахожу это наиболее убедительной причиной: **использование $/ в целом более идиоматично из-за того, что мы используем библиотеку ruby. Он полностью независимый и может также сочетаться с другими шаблонами без накладных расходов на печать дополнительного тега.

Вот пример из «реального мира», который я использую в нескольких живых проектах: /а>

person Steve Benner    schedule 10.07.2020
comment
Не могли бы вы показать нам, как использовать его в реальном тонком синтаксическом представлении? #покажикод - person Hellfar; 04.04.2021