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

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

2013-08-01 
拿rails4学《应用rails进行web敏捷开发 第四版》会遇到的问题rails new demo?可能存在的问题:因为生活在GFW

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

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

?

?

rails new demo --skip-bundle

?

Page12

启动server

?

rails server

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

?

?

?

rails s  # start serverrails 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进行入门问题也不大。如遇到什么妖孽问题幻影留言讨论。

?

热点排行