前言
Rails在2013年6月底已经发布了Rails4了。但是市面上最好的rails教材《应用rails进行web敏捷开发》是针对rails3的。如果按照教程上进行配置,系统默认安装rails都直接变成rails4.0了。当然用rvm也很容易做一套rails3.0的环境。但是既然rails4都出来了,为什么不体验一下呢……
这里分享一下如果用Rails4按照书上一步一步创建应用时可能会遇到的一些问题及解决办法。
排版都是按照书上的章节数进行描述的。
第二章
2.1 新建一个应用程序
Page11
原命令
rails new demo
可能存在的问题:因为生活在GFW内,如果没有科学上网手段或者网络不好,这一步会比较慢,这里推荐大家先跳过bundle步骤
rails new demo --skip-bundle
Page12
启动server
rails server
好似rails3开始就简化了很多关键字了,我列举一下几个比较常用的缩写
rails s # start server rails g # 等于rails generate 创建 rails d #等于rails destory 删除
第十一章 Ajax初体验
P103
问题:create.js.rjs
rails4算是彻底抛弃rjs了,所以按照书上使用以下代码,是一点作用没有用的。
page.replace_html('cart',render(@cart))
解决方法有两种,一种是使用coffee script,一种是使用jquery进行dom的操作
我这里介绍一下使用jquery解决如何解决这个问题。
1.安装jquery
rails g jquery:install --ui --force
2.new file- create.js.erb
$('#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变化部分的代码,我这里给个示例
if($('#cart tr').length==1){$('#cart').show("slow");} $('#current_item').css({'color':'red'}).animate({'color': "white"});//先变红再变白
P108 隐藏空购物车
我遇到过完成了P108的helper方法后,js就失效的情况。我自己的解决方法是去掉一些我觉得多余的代码。建议删除局部末班_cart中的unless代码。
P111 测试Ajax改变
由于没有使用rjs而是使用jquery,这部分的测试代码也需要进行调整
test "should create line_item via ajax" do assert_difference('LineItem.count') do xhr:post,:create,:product_id=>products(:one).id end assert_response :success assert_select_jquery :html ,"#cart" do assert_select 'tr#current_item td',/Programming Ruby 1.9/ end end
第12章 付款
P120
在orders_controllers.rb中原书代码如下
def create @order =Order.new(params[:order]) ###etc### end
在rails4,应该换个写法,仔细的同学可以发现脚手架生成的controller中有两段代码
before_action :set_order, only: [:show, :edit, :update, :destroy] def order_params params.require(:order).permit(:name, :address, :email, :pay_type) end
有点spring MVC的=中的preload方法。可以看到order_pararms方法就是返回一个request中的Order和原先params[:order]是没有区别的。所以这段现在改成即可。
# POST /orders # POST /orders.json def create @order = Order.new(order_params) @order.add_line_items_from_cart(current_cart) respond_to do |format| if @order.save Cart.destroy(session[:cart_id]) session[:cart_id]=nil format.html { redirect_to store_url, notice: 'Thanks for your order' } format.json { render action: 'show', status: :created, location: @order } else format.html { render action: 'new' } format.json { render json: @order.errors, status: :unprocessable_entity } end end end
总结
其他的问题应该都不是问题,基本上拿着第四版的书在rails4进行入门问题也不大。如遇到什么妖孽问题幻影留言讨论。
相关推荐
### Ruby on Rails Web 敏捷开发第四版 #### 关于本书的重要信息 《Ruby on Rails Web 敏捷开发第四版》是一本专为希望深入了解 Ruby on Rails 的开发者编写的书籍。该书主要针对 Rails 3 版本进行讲解,因此对于...
《敏捷Web开发与Rails:程序指南 第四版》是一本深度探讨使用Ruby on Rails框架进行敏捷Web应用开发的专业书籍。本书旨在帮助开发者充分利用Rails 4的特性,提高开发效率,实现快速迭代和高质量的代码编写。 Rails是...
该书的第四版,也被称为"Agile Web Development with Rails (4th edition)",是Ruby on Rails领域的经典之作,适合于初学者和经验丰富的开发者。 Ruby on Rails,简称Rails,是基于Ruby编程语言的一个开源Web应用...
### Web 开发敏捷之道 —— 应用 Rails 进行敏捷 Web 开发 第三版 #### 一、Rails 的背景与发展 **Rails**,全称为 **Ruby on Rails**,是一种用于构建 Web 应用的开源框架,由 David Heinemeier Hansson 在 2004 ...
Web开发敏捷之道 应用Rails进行敏捷Web开发第4版 原版书及代码 (rails3.2版) 原书名为:Agile Web Development with Rails 4th for Rails 3.2 代码包含了 3.0、3.1、3.2 ,与原书配套的是3.2。 里面包含了第三版的...
《Web开发敏捷之道:应用Rails进行敏捷Web开发》是由美国知名开发者Sam Ruby撰写的一本经典著作,该书的第四版提供了全面且深入的指导,帮助读者掌握使用Ruby on Rails框架进行敏捷开发的方法和技术。Ruby on Rails...
在本文中,我们将深入探讨如何使用Rails敏捷开发技术构建一个购物车系统,特别是在参考《rails敏捷开发第四版》中的示例。Rails 3.2.6是本文的基础框架,它是一个强大的Ruby Web应用程序框架,以其MVC(模型-视图-...
《敏捷Web开发与Rails》第四版是一本专为软件开发者设计的权威指南,全面涵盖了使用Ruby on Rails框架进行敏捷Web应用开发的知识。Rails 3是该版本的重点,它引入了许多新特性和改进,使得开发过程更为高效且灵活。...
### 知识点四:第一个Rails应用 **标题与描述**:本书通过一个简单的“Hello, Rails”示例来引导读者快速上手,掌握创建新应用的基本流程。 **详细说明**: - **创建新应用**:使用`rails new`命令初始化一个新的...
( [应用Rails进行敏捷Web开发(第4版)].(Agile.Web.Development.with.Rails.4th.Edition).S.Ruby&D.Thomas&D.H.Hansson.原版
例如,某些应用可能在旧版本中正常运行,但在新版本中会遇到问题。 为了确保读者能够顺利地跟随书中的教程进行实践,作者Sam Ruby维护了一个wiki页面(<http://pragprog.wikidot.com/changes-to-rails>),其中记录...