Kaminari 的 AJAX 翻页实现
Kaminari 是 rails 上一个很有名的分页管理扩展,使用极其简单。最近刚在项目中使用了它的 AJAX 分页的功能,记录一下实现的过程。
基本的安装和配置就不啰嗦了,按照官方的教程来进行就是啦,具体记录一下 AJAX 翻页实现的部分,以一个订单列表的页面作例子。
Kaminari 是 rails 上一个很有名的分页管理扩展,使用极其简单。最近刚在项目中使用了它的 AJAX 分页的功能,记录一下实现的过程。
基本的安装和配置就不啰嗦了,按照官方的教程来进行就是啦,具体记录一下 AJAX 翻页实现的部分,以一个订单列表的页面作例子。
ActiveRecord提供了很多方法来访问某个模型数据表的列信息
columns
返回一个列对象的数组
columns_hash
类似columns方法,不过返回一个以列名为key,列对象为value的hash数组
column_names
返回模型数据表列名的数组
Thin是一个ruby的轻量级的web server,根据它官网的提供的对比可以看到它在100个并发连接的情况下性能还是不错的。
代码文件有中文字符,打开页面时报:invalid multibyte char (US-ASCII) 错误,造成这个错误是因为Ruby1.9默认用ASCII编码来读源码的,如果代码里有非ASCII字符,就会发生这个错误。解决的方法是在有非ASCII字符文件的首行指定encoding即可,如:
# encoding: utf-8
class ApplicationController < ActionController::Base
protect_from_forgery
...........
话说每一个文件都要加是不是太麻烦点?就不能弄一个全局设定来吗?
Rails3.1的预览版已经出来了,带来了Sass和CoffeeScript这两个另人向往的新特性,因此打算在我的Gentoo上也安装来体验一下。
rvm use 1.9.2@railspre --create
gem update --system
gem update rake
gem install rails -v ">=3.1.0rc"
Rails3.1 需要Ruby >=1.9.2、Gem >=1.8.5、Rake >=0.9.1,所以在安装Rails3.1之前要先检查一下这几个条件是否已经达到。另外,现在网上看到的很多文章都说安装Rails3.1只需要:
gem install rails --pre
但这个方法从6月1日起就不行了,所以现在要改用:
gem install rails -v ">=3.1.0rc"
当使用rvm转到Ruby1.9.2的时候,会有一个问题:
gem -v
<internal:lib/rubygems/custom_require>:29:in `require': no such file to load -- auto_gem (LoadError)
from <internal:lib/rubygems/custom_require>:29:in `require'
这是因为gem还在使用系统的库文件,而系统里的Ruby版本还是1.8.*版的,所以就会有这个问题,解决的方法就是执行:
unset RUBYOPT
另外,使用Rails3.1的时候出现下面的错误:
ExecJS::RuntimeError
Could not find a JavaScript runtime</pre></p>
ExecJS::RuntimeError
这是因为系统里没有JS的运行环境,只要手动安装一个就可以了:
emerge nodejs
想学习一下Ruby On Rail,结果安装完之后运行rails new demo新建新项目的时候出现以下错误:
/usr/lib64/ruby/site_ruby/1.8/rubygems/custom_require.rb:36:in `gem_original_require': no such file to load -- rails/cli (LoadError)
from /usr/lib64/ruby/site_ruby/1.8/rubygems/custom_require.rb:36:in `require'
from /usr/lib64/ruby/gems/1.8/gems/rails-3.0.3/bin/rails:8
from /usr/bin/rails:8:in `load'
from /usr/bin/rails:8
最后是通过
emerge -avD =dev-ruby/rack-mount-0.6.13 =dev-ruby/erubis-2.6.6
把两个包降级后暂时解决这个问题,是新包有问题还是有其它的解决方法?