“收益”是做什么的?

时间:2018-10-18 03:22:13

标签: ruby-on-rails yield

yield在红宝石上的作用是什么?

<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 :(得分:1)

它告诉Rails将视图内容放在布局文件中该位置的此块(由yield调用)中。

查看rails指南以了解有关ActionView的更多信息。
https://guides.rubyonrails.org/action_view_overview.html

正如@Aleksei Matiushkin指出的那样,yield是纯红宝石,因此您还应该在自己的时间里进一步了解它。

这是一个()视觉演示,以解释该行发生的事情:

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>

答案 1 :(得分:0)

您的问题不够具体。在Rails中,与普通Ruby一样,方法定义中使用的yield表示传递给方法的块。

但是,从您提供的代码块来看,您似乎特别想问一下Rails视图布局中使用的yield。在这种情况下,它表示要在上下文中呈现的视图文件中描述的主要内容。例如,当控制器为Foo,且动作为bar时,在这样的上下文中使用的布局中使用的yield将被{{1 }}(或其他格式的相应视图文件)。

答案 2 :(得分:0)

您的概念必须简单:yield是将内容块(html)从操作视图放到布局模板的地方 例如:动作索引渲染index.html,结果将放入/填充yield