Rails这是什么"产生"做?

时间:2015-08-03 00:01:36

标签: ruby-on-rails ruby ruby-on-rails-3 view 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>

请参阅@Christian_Rolle的回答

2 个答案:

答案 0 :(得分:1)

保留的Ruby关键字 yield 用于处理闭包(如Proc或lamda)。这说它是处理某些逻辑的某种占位符。 在Ruby on Rails视图中,模板化用于在部分中进行合并。对于像application.html.erb这样的布局文件,它会合并到控制器响应模板中,例如index.html.erb或show.html.erb。 可以将其视为全局布局环境中控制器响应HTML的占位符。

详情请见:Understanding yield 或关于Ruby闭包: Do the Proc! ... a Ruby closureHave a lambda! ... a Ruby closure

答案 1 :(得分:1)

好吧......让我们以简单的方式谈谈它,产量就像一个占位符或者像一个容器。当您创建不同的视图部分并希望在任何特定的布局文件上显示它时,您可以在yield部分调用该部分。这就是它的全部。