Что делает «доходность»? - PullRequest
0 голосов
/ 18 октября 2018

Что делает yield в ruby ​​на рельсах?

<body data-spy="scroll" data-target=".sidebar">
  <!-- Your timezone is <%= Time.zone %> -->
  <!-- <%= "Ruby Version is #{RUBY_VERSION}" if Rails.env =~ /test|development/ %> -->
  <%= render partial:'shared/account_status' %>
  <%= render partial:"shared/session_timeout" %>
  <div class="container">
    <%= render partial:"shared/branding" %>
    <%= render partial:"shared/nav", locals:{icons:icons, actionable_urls:actionable_urls, top_level_items:MenuItem.top_level_items_with_access_rights_for_user(current_user).sort{|a, b| a.sequence <=> b.sequence}, current_item:current_navigation_item} %>
    <div style="clear:both"></div>
    <div id="content">
      <%= render partial:"shared/flash", object:flash %>
      <%= yield %>
    </div>

  </div>
  <%= render partial:"shared/ldap_user_menu" if signed_in_as_ldap_user?  %>
</body>

Ответы [ 3 ]

0 голосов
/ 18 октября 2018

Ваш вопрос недостаточно конкретен.В Rails, как и в обычном Ruby, yield, используемый в определении метода, представляет блок, который передается методу.

Однако, судя по предоставленному вами блоку кода, вы, кажется, особенно хотите спроситьоколо yield используется в макетах представления в Rails.В таком случае он представляет основной контент, описанный в файле представления, который должен отображаться в контексте.Например, когда контроллером является Foo, а действие - bar, тогда yield, используемый в макете для использования в таком контексте, будет заменен содержимым /app/views/foo/bar.html (или любым другим соответствующим файлом представленияв другом формате).

0 голосов
/ 18 октября 2018

Это должно быть просто в вашей концепции: yield - это место, куда помещается блок контента (html) из вида действия в пример шаблона макета: рендеринг индекса действия index.html, результат будет помещен / заполнен в yield

0 голосов
/ 18 октября 2018

Он сообщает Rails поместить содержимое вашего представления в этот блок (который вызывается yield) в этом месте в файле макета.

Ознакомьтесь с руководством по рельсам, чтобы узнать больше о ActionView.
https://guides.rubyonrails.org/action_view_overview.html

Как указал @Aleksei Matiushkin, yield - это чистый рубин, поэтому вам также следует узнать большеоб этом в свое время.

Вот ( my ) визуальное представление, чтобы объяснить, что произошло в этой строке:

view.html.erb :

<p>Hello there!</p>
<p>I'm a content from view</p>

layout.html.erb :

<!DOCTYPE html>
<html>
  <head>
  </head>
  <body>
    <%= yield %>
  </body>
</html>

Теперь результаты будут такими:

<!DOCTYPE html>
<html>
  <head>
  </head>

  <body>
    <p>Hello there!</p>
    <p>I'm a content from view</p>
  </body>
</html>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...