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

作者: Suprise
发布时间:2015-07-13 11:28:46

身心俱疲,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),所以上面那句话就好理解了吧。。

 

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

来源:http://www.cnblogs.com/suprise/archive/2013/03/27/2984488.ht

推荐: