模版点染的过程
模版渲染的过程
关于Rails的渲染模版的过程总结:
1. 对应控制器中定义的实例变量会被传到相应的视图中
class StoreController < ApplicationController def index @products = Product.find_products_for_sale @cart = find_cart end end
2. store.html.erb
在视图中利用render方法来进行模版的渲染,也就是说将从控制器中收集到的实例变量当作render的参数,传给要渲染的模版 , :partial => "cart" 就是模版的名称 , 它就会去渲染名称为 _cart.html.erb 的模版,在局部模版 _cart.html.erb中就会有一个与模版名称相同的变量cart
<%= render(:partial => "cart", :object => @cart) %>
3. _cart.html.erb
然后,在模版中还可以继续渲染其他模版,cart就是从上面传过来的,然后再将需要的数据,传递给下一个模版 ,不难想象,下一个模版的名字就是:_cart_item.html.erb, 同样在这个模版中就会有cart_item这个同名的变量可以使用了。
<%= render(:partial => "cart_item", :collection => @cart.items) %>
4. _cart_item.html.erb,
在此模版中使用cart_item变量
<tr> <td><%= cart_item.quantity %> ×</td> <td><%= h cart_item.title %></td> <td class="item-price"><%= number_to_currency(cart_item.price) %></td> </tr>
注意:从控制器中传递过来的实例变量只能在对应的视图中使用,而不能在多个视图中共享,若想在多个视图中共享的话,需要考虑在helper中或者ApplicationController中定义并引用(这个没有测试过,一个好心的网友提示了一下)