首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > JavaScript >

RJS模板点染

2012-08-30 
RJS模板渲染?环境: ruby1.8.7, rails 2.2.2?Rails中有3种模板渲染方式, ERB, RJS,Builder?下面是使用ERB进

RJS模板渲染

?

环境: ruby1.8.7, rails 2.2.2

?

Rails中有3种模板渲染方式, ERB, RJS,Builder

?

下面是使用ERB进行模板渲染的程序,当浏览器发送add_to_cart请求时, 页面使用redirect_to进行重定向,此时render接收@cart 变量,开始渲染模板名称为_cart.html.erb的模板(rails规范,这里的_cart 为:partial => "cart"的转换),从而实现ERB模板渲染。

?

?

 <dir id="cart">          <%= render(:partial => "cart", :object => @cart) %>  </dir>

?

?

这种模板渲染在执行完action后,要进行重定向操纵,真个页面都要刷新, 所以Rails提供了RJS模板渲染技术,使用AJAX来向服务器发送Ajax请求

?

?

<% form_remote_tag :url => {:action => 'add_to_cart', :id => product} do -%>      <%= submit_tag "Add To Cart" %><% end -%>

?

?

此时当发送add_to_cart请求时,就会发起Ajax远程调用,还需要在action中增加如下代码,这样rails就会去调用add_to_cart.js.rjs, 注意rjs模板的名称一定要与上面的:action 同名

?

?

  def add_to_cart    product = Product.find(params[:id])    @cart = find_cart    @cart.add_product(product)    #redirect_to_index    respond_to do |format|      format.js    end  rescue ActiveRecord::RecordNotFound     logger.error("attemp to access invalid product #{params[:id]}")     redirect_to_index("Invalid product")  end

?

?

?在rjs中指定当前页面中id为cart的元素,将从服务器返回的数据填充进去,即实现了不用刷新界面就讲购物车信息更新的目的

?

?

#add_to_cart.js.rjspage.replace_html "cart", {:partial => "cart", :object => @cart}
?

?

?

?

热点排行