ruby on rails(9) -- AJAX(1)

火热的Ajax啊,全世界的程序员都在讨论它(c,c++请飘过),终于我要开始学习啦。
首先是代码重用,rails为了使逻辑和表现分开,采取了一些列的方法,其中之一是,不要把逻辑写在表现页面上。因为,我们要分离拉。局部的代码,就采用partical。如<%= render(:partial =>"cart_item", :collection => cart.items)%>,:partial 的参数所对应的页面就是在参数名前加_.因此对应的页面为_cart_item.html.erb.
修改add_to_cart.html.erb

<table>
<%= render(:partial => "cart_item",:collection => @cart.items)%>
<tr class="total-line">
<td colspan="2">Total</td>
<td class="total-cell"><%= number_to_currency(@cart.total_price) %></td>
</tr>
</table>

由于:partial 所指的为cart_item.因此,编写页面_cart_item.html.erb,:collection嘛意思么

_cart_item.html.erb

<tr>
<td><%=h cart_item.quantity %>×</td>
<td><%=h cart_item.title%></td>
<td class="item-price"><%= number_to_currency(cart_item.price)%>
</tr>

里面的变量名和:partial参数一致
同理,修改layout/store_html.erb页面

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

:object又是嘛意思么,这些个参数,刷新@cart?
然后编写 _cart.html.erb ,用于计算total_price

<div class="cart-title">Your Cart</div>
<table>
<%= render(:partial =>"cart_item", :collection => cart.items)%>
<tr class="total-line">
<td colspan="2">Total</td>
<td class="total-cell"><%= number_to_currency(cart.total_price)%></td>
</tr>
</table>
<%=button_to "Empty Cart", :action =>:empty_cart%>

@cart未定义,所以在store_controller里面

def index
@products = Product.find_products_for_sale
@cart = find_cart
end

然后修改css亦即重定向。即可看到购物车在左边,原来的废掉了。css使购物车放右边,就是平时网页上的购物车了。
[color=red]ps:partial 如果对应的逻辑页面多,能否写到一个上去,或者有什么方法便于管理多个逻辑页面,不能就这么放在view下吧[/color]

[color=red]接下来是正题,ajax[/color]
首先引入rails的js包,layout/store_controller.html.erb导入 <%= javascript_include_tag :defaults%>
然后删除index.html.erb <%=button_to ... %>,改为

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

form...tag ,表示要用<form>,remote表示远程调用Ajax。url 服务程序调用地址 do,end form基本格式
然后修改add_to_cart action 如下

else
@cart = find_cart
@cart.add_product(product)
respond_to{|format| format.js}
end

repond_to 根据不同的格式类型采取不同的处理方式。客户端发送给浏览器式,头部Accept-Type: text/xml,指明格式,浏览器根据这个,采取不同的处理方式,未指明,默认text/html。
format.js指向index.rjs
然后编辑view/store/add_to_action.js.rjs。为什么在这个目录?
page.replace_html("cart",:partial => "cart", :object => @cart)
page,js产生器,page_html()取代
<div id="cart">
<%= render (:partial => "cart",:object => @cart)%>
</div>
参数必须一致
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
资源包主要包含以下内容: ASP项目源码:每个资源包中都包含完整的ASP项目源码,这些源码采用了经典的ASP技术开发,结构清晰、注释详细,帮助用户轻松理解整个项目的逻辑和实现方式。通过这些源码,用户可以学习到ASP的基本语法、服务器端脚本编写方法、数据库操作、用户权限管理等关键技术。 数据库设计文件:为了方便用户更好地理解系统的后台逻辑,每个项目中都附带了完整的数据库设计文件。这些文件通常包括数据库结构图、数据表设计文档,以及示例数据SQL脚本。用户可以通过这些文件快速搭建项目所需的数据库环境,并了解各个数据表之间的关系和作用。 详细的开发文档:每个资源包都附有详细的开发文档,文档内容包括项目背景介绍、功能模块说明、系统流程图、用户界面设计以及关键代码解析等。这些文档为用户提供了深入的学习材料,使得即便是从零开始的开发者也能逐步掌握项目开发的全过程。 项目演示与使用指南:为帮助用户更好地理解和使用这些ASP项目,每个资源包中都包含项目的演示文件和使用指南。演示文件通常以视频或图文形式展示项目的主要功能和操作流程,使用指南则详细说明了如何配置开发环境、部署项目以及常见问题的解决方法。 毕业设计参考:对于正在准备毕业设计的学生来说,这些资源包是绝佳的参考材料。每个项目不仅功能完善、结构清晰,还符合常见的毕业设计要求和标准。通过这些项目,学生可以学习到如何从零开始构建一个完整的Web系统,并积累丰富的项目经验。
资源包主要包含以下内容: ASP项目源码:每个资源包中都包含完整的ASP项目源码,这些源码采用了经典的ASP技术开发,结构清晰、注释详细,帮助用户轻松理解整个项目的逻辑和实现方式。通过这些源码,用户可以学习到ASP的基本语法、服务器端脚本编写方法、数据库操作、用户权限管理等关键技术。 数据库设计文件:为了方便用户更好地理解系统的后台逻辑,每个项目中都附带了完整的数据库设计文件。这些文件通常包括数据库结构图、数据表设计文档,以及示例数据SQL脚本。用户可以通过这些文件快速搭建项目所需的数据库环境,并了解各个数据表之间的关系和作用。 详细的开发文档:每个资源包都附有详细的开发文档,文档内容包括项目背景介绍、功能模块说明、系统流程图、用户界面设计以及关键代码解析等。这些文档为用户提供了深入的学习材料,使得即便是从零开始的开发者也能逐步掌握项目开发的全过程。 项目演示与使用指南:为帮助用户更好地理解和使用这些ASP项目,每个资源包中都包含项目的演示文件和使用指南。演示文件通常以视频或图文形式展示项目的主要功能和操作流程,使用指南则详细说明了如何配置开发环境、部署项目以及常见问题的解决方法。 毕业设计参考:对于正在准备毕业设计的学生来说,这些资源包是绝佳的参考材料。每个项目不仅功能完善、结构清晰,还符合常见的毕业设计要求和标准。通过这些项目,学生可以学习到如何从零开始构建一个完整的Web系统,并积累丰富的项目经验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值