• RoR(Ruby on Rails)学习笔记(4)


    身心俱疲,Ajax真是难以吐槽的一章,各种bug,看来咱这本书虽然是2011年的,但已经过时了,回头必须看看有没有新的英文版教材。

    ajax另一个蛋疼的地方是,我没有找到像以前一样单步调试的方式,也不容易跟踪错误(也许该试试Firebug?),只能看错误log。

    做好准备,让我们来吧。

    1,create.js.rjs没有作用

    原因我也不太清楚,不知道是不是rjs类型的文件过时了。。

    菜鸟解决方案:

    1,将app/views/line_items/create.js.rjs文件的后缀名rjs换为erb。

    2,内容变为

    $('#cart').html("<%= escape_javascript(render(@cart)) %>");

    没错,这就是jquery的语法,该erb文件先进行解释,将<%= escape_javascript(render(@cart)) %>解释为应有的内容,然后整体文件变为js加载,用chrome的查看源代码是看不出来的。

    这样就可以看到ajax后的变化了~

    2,Yellow Fade不褪色

    原有方法依旧不能用,我们可以用jquery的语法来实现相同的效果。

    菜鸟解决方法:

    1,首先下载jquery.color.js

    复制存为名称为jquery.color.js的文件就好。再将该文件存至app/assets/stylesheets/目录下。

    最后在app/views/layouts/application.html.erb文件中加入这么一行(位置不用多说吧?),将该js文件导入

    <%= javascript_include_tag "jquery.color" %> 

    2,在app/views/line_items/create.js.erb文件中加入一行

    $('#current_item').css({ 'background-color': "#88ff88" }).animate({ 'background-color': "#114411" }, 1000); 

    3,隐藏购物车,书上前面几种方法不行,还报错,幸好最后一种是正确的。

    4,11.5节的测试中,在修改完书上的错误后,还有个错误

    NoMethodError: undefined method `cart' for nil:NilClass

    位置是app/controllers/carts_controller.rb:52:in `block (2 levels) in create

    来看代码

     1 def create
     2     @cart = Cart.new(params[:cart])
     3 
     4     respond_to do |format|
     5       if @cart.save
     6         format.html { redirect_to(@line_item.cart)}
     7         format.json { render json: @cart, status: :created, location: @cart }
     8       else
     9         format.html { render action: "new" }
    10         format.json { render json: @cart.errors, status: :unprocessable_entity }
    11       end
    12     end
    13   end

    注意第6行中的@line_item,在最一开始建立购物车的时候,@line_item是不存在的,而此处重定向只需定向到刚保存的@cart就好。

    解决方法:

    将上述代码第六行中的@line_item.cart换为@cart

    测试即可通过。

    5.测试时报错StandardError, "No fixture with name '#{fixture}' found for table 'products'

    尚未解决,不过不影响网站运行。

    这有篇参考看不太懂http://hi.baidu.com/rainchen/item/c34f3b49e34dc00ae93504c0

     ----------------------------------------------------------------new ver 分割线-------------------------------------------------------------------------

    已解决,拼写错误,我没有像书上一样在测试products数据中建一个name叫ruby:的条目,但在其他地方引用了,如:products=>(:ruby),所以上面那句话就好理解了吧。。

    另:一些语法概念我已经忘了= =,不知道各位是不是这样,建议返回第四章再看一下。。

  • 相关阅读:
    xml解析
    xml基础
    对象的深浅克隆
    批处理文件(bat)
    贪吃蛇逻辑代码
    排序算法
    tcp,第一个例子,客户端,服务端
    网络编程三要素
    装饰者模式
    工作中遇到的问题
  • 原文地址:https://www.cnblogs.com/suprise/p/2984488.html
Copyright © 2020-2023  润新知