拿rails4学《应用rails进行web敏捷开发 第四版》会遇到的问题

前言

Rails在2013年6月底已经发布了Rails4了。但是市面上最好的rails教材《应用rails进行web敏捷开发》是针对rails3的。如果按照教程上进行配置,系统默认安装rails都直接变成rails4.0了。当然用rvm也很容易做一套rails3.0的环境。但是既然rails4都出来了,为什么不体验一下呢……

这里分享一下如果用Rails4按照书上一步一步创建应用时可能会遇到的一些问题及解决办法。

排版都是按照书上的章节数进行描述的。

 

第二章

2.1 新建一个应用程序

Page11

原命令

 

Ruby代码   收藏代码
  1. rails new demo  

 可能存在的问题:因为生活在GFW内,如果没有科学上网手段或者网络不好,这一步会比较慢,这里推荐大家先跳过bundle步骤

 

 

Ruby代码   收藏代码
  1. rails new demo --skip-bundle  

 

Page12

启动server

 

Ruby代码   收藏代码
  1. rails server  

 好似rails3开始就简化了很多关键字了,我列举一下几个比较常用的缩写

 

 

 

Java代码   收藏代码
  1. rails s  # start server  
  2. rails g # 等于rails generate 创建  
  3. rails d #等于rails destory  删除  

 

 

第十一章 Ajax初体验

P103

问题:create.js.rjs

rails4算是彻底抛弃rjs了,所以按照书上使用以下代码,是一点作用没有用的。

 

Js代码   收藏代码
  1. page.replace_html('cart',render(@cart))  

 解决方法有两种,一种是使用coffee script,一种是使用jquery进行dom的操作

 

我这里介绍一下使用jquery解决如何解决这个问题。

1.安装jquery

 

Ruby代码   收藏代码
  1. rails g jquery:install --ui --force  

 2.new file- create.js.erb

 

 

Js代码   收藏代码
  1. $('#cart').html(" <%= escape_javascript(render(@cart))%> ");  

 重点是html方法后的引号必须是双引号,否则后期会导致测试用例失败。

 

 

P105 高亮变化

由于这里使用了高亮animate,需要额外的jquery-plugin支持。

1.先去下载Jquery-color,并将jquery-color.js文件放置于/app/assets/javascripts目录下

2.修改之前的create.js.erb文件,增加支持highlight变化部分的代码,我这里给个示例

 

Java代码   收藏代码
  1. if($('#cart tr').length==1){$('#cart').show("slow");}  
  2. $('#current_item').css({'color':'red'}).animate({'color'"white"});//先变红再变白  

 

 

 

P108 隐藏空购物车

我遇到过完成了P108的helper方法后,js就失效的情况。我自己的解决方法是去掉一些我觉得多余的代码。建议删除局部末班_cart中的unless代码。

 

P111 测试Ajax改变

由于没有使用rjs而是使用jquery,这部分的测试代码也需要进行调整

 

Ruby代码   收藏代码
  1. test "should create line_item via ajax" do  
  2.   assert_difference('LineItem.count'do  
  3.     xhr:post,:create,:product_id=>products(:one).id  
  4.   end  
  5.     
  6.   assert_response :success  
  7.   assert_select_jquery :html ,"#cart" do  
  8.     assert_select 'tr#current_item td',/Programming Ruby 1.9/  
  9.   end  
  10.     
  11. end  

 

 

第12章 付款

P120

在orders_controllers.rb中原书代码如下

 

Ruby代码   收藏代码
  1. def create  
  2.   @order =Order.new(params[:order])  
  3.    ###etc###  
  4. end  

 在rails4,应该换个写法,仔细的同学可以发现脚手架生成的controller中有两段代码

Ruby代码   收藏代码
  1. before_action :set_order, only: [:show:edit:update:destroy]  
  2.   
  3.     def order_params  
  4.       params.require(:order).permit(:name:address:email:pay_type)  
  5.     end  

 有点spring MVC的=中的preload方法。可以看到order_pararms方法就是返回一个request中的Order和原先params[:order]是没有区别的。所以这段现在改成即可。

Ruby代码   收藏代码
  1. # POST /orders  
  2. # POST /orders.json  
  3. def create  
  4.   @order = Order.new(order_params)  
  5.   @order.add_line_items_from_cart(current_cart)  
  6.     
  7.     
  8.   respond_to do |format|  
  9.     if @order.save  
  10.       Cart.destroy(session[:cart_id])  
  11.       session[:cart_id]=nil  
  12.         
  13.       format.html { redirect_to store_url, notice: 'Thanks for your order' }  
  14.       format.json { render action: 'show', status: :created, location: @order }  
  15.     else  
  16.       format.html { render action: 'new' }  
  17.       format.json { render json: @order.errors, status: :unprocessable_entity }  
  18.     end  
  19.   end  
  20. end  

 

总结

其他的问题应该都不是问题,基本上拿着第四版的书在rails4进行入门问题也不大。如遇到什么妖孽问题幻影留言讨论。

1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科与技术等相关专业,更为适合; 4、下载使用后,可先查看REAdMe.md或论文文件(如有),本项目仅用作交流习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科与技术等相关专业,更为适合; 4、下载使用后,可先查看REAdMe.md或论文文件(如有),本项目仅用作交流习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科与技术等相关专业,更为适合; 4、下载使用后,可先查看READme.md或论文文件(如有),本项目仅用作交流习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值