Mel*_*lon 32 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>
Run Code Online (Sandbox Code Playgroud)
要问两个问题:
<body>.<%= yield :jstemplates %>和在视图中包含js代码
<%= yield :some_car %>,它是指向一个视图还是只是为了显示它的值some_car?Pet*_*own 55
如果没有任何参数,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 %>
Run Code Online (Sandbox Code Playgroud)
布局/ car_general.html.erb
<%= yield :footer %>
Run Code Online (Sandbox Code Playgroud)
Rails指南有一个关于使用yield和content_for的很好的部分:http://guides.rubyonrails.org/layouts_and_rendering.html#understanding-yield
API文档也content_for很有用,还有一些其他示例可供使用.请注意,它适用于Rails 3.1.1,但此功能自2.3以来没有太大变化,如果有的话,仍然应用于3.0.x和3.1.x.
| 归档时间: |
|
| 查看次数: |
35479 次 |
| 最近记录: |