Rails:关于产量

时间:2011-10-21 10:18:03

标签: ruby-on-rails ruby-on-rails-3 ruby-on-rails-3.1

我在 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. 在哪里可以找到第一个&lt;%=产量%&gt;的产量含量。在<body>下。
  2. 是否使用特定于rails的方式在视图中包含js代码 <%= yield :jstemplates %>以及<%= yield :some_car %>,是指某个视图还是只显示some_car的价值?

1 个答案:

答案 0 :(得分:52)

没有任何参数,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 %>

<强>布局/ car_general.html.erb

<%= yield :footer %>

Rails指南中有一个关于使用yield和content_for的好部分:http://guides.rubyonrails.org/layouts_and_rendering.html#understanding-yield

content_for的API文档也很有用,还有其他一些示例可供使用。请注意,它适用于Rails 3.1.1,但此功能自2.3以来没有太大变化,如果有的话,仍应适用于3.0.x和3.1.x.