Поиск…


Partials

Частичные шаблоны (частичные) - это способ разбить процесс рендеринга на более управляемые куски. Частицы позволяют извлекать фрагменты кода из ваших шаблонов для разделения файлов, а также повторно использовать их во всех шаблонах.

Чтобы создать частичный, создайте новый файл, начинающийся с _form.html.erb подчеркивания: _form.html.erb

Чтобы сделать частичное как часть представления, используйте метод рендеринга в представлении: <%= render "form" %>

  • Обратите внимание, что подчеркивание не учитывается при рендеринге
  • Частичный должен быть отображен с использованием его пути, если он находится в другой папке

Чтобы передать переменную в частичную как локальную переменную, используйте это обозначение:

<%= render :partial => 'form', locals: { post: @post } %>

Частицы также полезны, когда вам нужно повторно использовать точно такой же код ( концепция DRY ).

Например, для повторного использования кода <head> , создайте частичное имя _html_header.html.erb , введите свой <head> код, который нужно повторно использовать, и отрисуйте частичный, когда это необходимо: <%= render 'html_header' %> .

Частицы объектов

Объекты, которые отвечают на to_partial_path также могут быть отображены, как в <%= render @post %> . По умолчанию для моделей ActiveRecord это будет что-то вроде posts/post , поэтому, фактически, рендеринга @post , будут отображаться файлы views/posts/_post.html.erb .

Локальная именованная post будет автоматически назначена. В конце концов, <%= render @post %> - это короткая рука для <%= render 'posts/post', post: @post %> .

to_partial_path могут быть представлены коллекции объектов, которые отвечают на to_partial_path , например <%= render @posts %> . Каждый элемент будет отображаться последовательно.

Глобальные Частицы

Чтобы создать глобальный фрагмент, который можно использовать в любом месте без ссылки на его точный путь, частичное должно быть расположено в пути views/application . Предыдущий пример был изменен ниже, чтобы проиллюстрировать эту функцию.

Например, это путь к глобальному частичному app/views/application/_html_header.html.erb:

Чтобы сделать это глобальное частичное в любом месте, используйте <%= render 'html_header' %>

AssetTagHelper

Чтобы рельсы автоматически и правильно связывали ресурсы (css / js / images), в большинстве случаев вы хотите использовать встроенные помощники. ( Официальная документация )

Помощники изображения

image_path

Это возвращает путь к объекту изображения в app/assets/images .

image_path("edit.png") # => /assets/edit.png

URL изображения

Это возвращает полный URL-адрес ресурса изображения в app/assets/images .

image_url("edit.png") # => http://www.example.com/assets/edit.png

IMAGE_TAG

Используйте этот помощник, если вы хотите включить <img src="" /> -tag с исходным набором.

image_tag("icon.png") # => <img src="/assets/icon.png" alt="Icon" />

Помощники JavaScript

javascript_include_tag

Если вы хотите включить JavaScript-файл в свой вид.

javascript_include_tag "application" # => <script src="/assets/application.js"></script>

javascript_path

Это возвращает путь к вашему JavaScript-файлу.

javascript_path "application" # => /assets/application.js

javascript_url

Это возвращает полный URL вашего JavaScript-файла.

javascript_url "application" # => http://www.example.com/assets/application.js

Помощники стилей

Если вы хотите включить CSS-файл в свой вид.

stylesheet_link_tag "application" # => <link href="/assets/application.css" media="screen" rel="stylesheet" />

stylesheet_path

Это возвращает путь к вашему ресурсу таблицы стилей.

stylesheet_path "application" # => /assets/application.css

stylesheet_url

Это возвращает полный URL-адрес вашего ресурса таблицы стилей.

stylesheet_url "application" # => http://www.example.com/assets/application.css

Пример использования

При создании нового приложения rails у вас автоматически будут два этих помощника в app/views/layouts/application.html.erb

<%= stylesheet_link_tag    'application', media: 'all', 'data-turbolinks-track': 'reload' %>
<%= javascript_include_tag 'application', 'data-turbolinks-track': 'reload' %>

Эти результаты:

// CSS
<link rel="stylesheet" media="all" href="/assets/application.self-e19d4b856cacba4f6fb0e5aa82a1ba9aa4ad616f0213a1259650b281d9cf6b20.css?body=1" data-turbolinks-track="reload" />
// JavaScript
<script src="/assets/application.self-619d9bf310b8eb258c67de7af745cafbf2a98f6d4c7bb6db8e1b00aed89eb0b1.js?body=1" data-turbolinks-track="reload"></script>

Состав

Поскольку Rails следует за шаблоном M V C Views , где ваши «шаблоны» предназначены для ваших действий.

Допустим, у вас есть контроллер articles_controller.rb . Для этого контроллера у вас будет папка в виде под названием app/views/articles :

app
|-- controllers
|   '-- articles_controller.rb
|
'-- views
    '-- articles
    |   |- index.html.erb
    |   |- edit.html.erb
    |   |- show.html.erb
    |   |- new.html.erb
    |   '- _partial_view.html.erb
    |
    '-- [...]

Эта структура позволяет вам иметь папку для каждого контроллера. При вызове действия в контроллере соответствующее представление будет отображаться автоматически.

// articles_controller.rb
class ArticlesController < ActionController::Base
  def show
  end
end

// show.html.erb
<h1>My show view</h1>

Заменить HTML-код в Views

Если вы когда-либо хотели определить содержимое html, которое будет напечатано на странице во время выполнения, тогда для этого рельсы имеют очень хорошее решение. У этого есть что-то, называемое content_for, которое позволяет нам передать блок в представление рельсов. Пожалуйста, проверьте приведенный ниже пример,

Объявить content_for

<div>
  <%= yield :header %>
</div>

<% content_for :header do %>
 <ul>
   <li>Line Item 1</li>
   <li>Line Item 2</li>
 </ul>
<% end %>

HAML - альтернативный способ использования в ваших представлениях

HAML (язык разметки HTML-абстракции) - это прекрасный и элегантный способ описания и дизайна HTML ваших взглядов. Вместо меток открытия и закрытия HAML использует отступы для структуры ваших страниц. В принципе, если что-то должно быть помещено в другой элемент, вы просто отступаете его, используя одну вкладку. В HAML важны вкладки и пробелы, поэтому убедитесь, что вы всегда используете одинаковое количество вкладок.

Примеры:

#myview.html.erb
<h1><%= @the_title %></h1>
<p>This is my form</p>
<%= render "form" %>

И в HAML:

#myview.html.haml
%h1= @the_title
%p
    This is my form
= render 'form'

Видите ли, структура макета намного яснее, чем использование HTML и ERB.

Монтаж

Просто установите драгоценный камень, используя

gem install haml

и добавьте драгоценный камень в Gemfile

gem "haml"

Для использования HAML вместо HTML / ERB просто замените расширения файлов ваших представлений от something.html.erb на something.html.haml .

Быстрые подсказки

Общие элементы, такие как divs, могут быть написаны коротким образом

HTML

<div class="myclass">My Text</div>

HAML

%div.myclass

HAML, стенография

.myclass

Атрибуты

HTML

<p class="myclass" id="myid">My paragraph</p>

HAML

%p{:class => "myclass", :id => "myid"} My paragraph

Вставка кода ruby

Вы можете вставить код ruby ​​с знаками = и -.

= link_to "Home", home_path

Код, начинающийся с =, будет выполнен и встроен в документ.

Код, начинающийся с - будет выполнен, но не вставлен в документ.

Полная документация

HAML очень легко начать, но также очень сложно, поэтому я рекомендую прочитать документацию .



Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow