Рельсы: о доходности - PullRequest
       1

Рельсы: о доходности

30 голосов
/ 21 октября 2011

Я видел код в Rails v2.3 приложении.

В layout/car_general.html.erb (это представление вызывается методом в cars_controller), я увидел код:

<body>
    <%= yield %>

    <%= javascript_include_tag 'jquery-1.4.2.min' %>

    <% javascript_tag do %>
      <%= yield :jstemplates %>
          var some_car = new Object;
      <%= yield :some_car %>
    <% end -%>
</body>

Два вопроса:

  1. Где я могу найти доходность первого <% = yield%> в <body>.
  2. Это специфичный для рельсов способ включить код js в представление, используя <%= yield :jstemplates %> а как насчет <%= yield :some_car %>, это точка зрения или просто показать значение some_car?

1 Ответ

53 голосов
/ 21 октября 2011

Без каких-либо аргументов yield будет отображать шаблон текущего контроллера / действия.Так что, если вы находитесь на странице cars/show, она будет отображать views/cars/show.html.erb.

Когда вы передадите yield аргументу, это позволит вам определить контент в ваших шаблонах, который вы хотите визуализировать вне этого шаблона.,Например, если на вашей странице cars/show имеется определенный фрагмент HTML-кода, который вы хотите отобразить в нижнем колонтитуле, вы можете добавить следующее в шаблон показа и макет car_general:

show.html.erb:

<% content_for :footer do %>
  This content will show up in the footer section
<% end %>

layouts / car_general.html.erb

<%= yield :footer %>

В Руководстве по Rails есть хороший раздел по использованию yield и content_for: http://guides.rubyonrails.org/layouts_and_rendering.html#understanding-yield

Документация по API для content_for также полезна и имеет несколько других примеров для подражания.Обратите внимание, что это для Rails 3.1.1, но эта функциональность не сильно изменилась с 2.3, если она вообще существует и должна применяться для 3.0.x и 3.1.x.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...