Rails:关于产量 [英] Rails: about yield

查看:34
本文介绍了Rails:关于产量的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在 Rails v2.3 应用中看到了一些代码.

I saw some code in a Rails v2.3 app.

layout/car_general.html.erb(这个view被cars_controller中的一个方法调用),看到了代码:

In layout/car_general.html.erb (this view is called by a method in cars_controller) , I saw the code:

<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%>的yield含量.
  2. 是否是通过使用在视图中包含 js 代码的特定于 Rails 的方式<%= yield :jstemplates %> 那么 <%= yield :some_car %> 是指向视图还是仅仅显示值some_car?
  1. Where can I find the yield content of the first <%=yield%> under <body>.
  2. Is it a rails specific way to include js code in a view by using <%= yield :jstemplates %> and what about <%= yield :some_car %> , is it point to a view or just to show the value of some_car?

推荐答案

不带任何参数,yield 将呈现当前控制器/动作的模板.因此,如果您在 cars/show 页面上,它将呈现 views/cars/show.html.erb.

Without any arguments, yield will render the template of the current controller/action. So if you're on the cars/show page, it will render views/cars/show.html.erb.

当您传递 yield 参数时,它允许您在模板中定义要在该模板之外呈现的内容.例如,如果您的 cars/show 页面有一个要在页脚中呈现的特定 html 片段,您可以将以下内容添加到您的展示模板和 car_general 布局:

When you pass yield an argument, it lets you define content in your templates that you want to be rendered outside of that template. For example, if your cars/show page has a specific html snippet that you want to render in the footer, you could add the following to your show template and the car_general layout:

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

The Rails Guide has a good section on using yield and content_for: http://guides.rubyonrails.org/layouts_and_rendering.html#understanding-yield

content_for 也很有帮助,并且还有其他一些示例可供参考.请注意,它适用于 Rails 3.1.1,但此功能自 2.3 以来没有太大变化,如果有的话,仍然适用于 3.0.x 和 3.1.x.

The API documentation for content_for is helpful too and has some other examples to follow. Note that it's for Rails 3.1.1 , but this functionality has not changed much since 2.3, if at all and should still apply for 3.0.x and 3.1.x.

这篇关于Rails:关于产量的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆