标签: rails

Kaminari 的 AJAX 翻页实现

Kaminari 是 rails 上一个很有名的分页管理扩展,使用极其简单。最近刚在项目中使用了它的 AJAX 分页的功能,记录一下实现的过程。

基本的安装和配置就不啰嗦了,按照官方的教程来进行就是啦,具体记录一下 AJAX 翻页实现的部分,以一个订单列表的页面作例子。

通过ActiveRecord访问数据表的列信息

ActiveRecord提供了很多方法来访问某个模型数据表的列信息

columns
返回一个列对象的数组

columns_hash
类似columns方法,不过返回一个以列名为key,列对象为value的hash数组

column_names
返回模型数据表列名的数组

Rails3.1 invalid multibyte char错误处理

代码文件有中文字符,打开页面时报:invalid multibyte char (US-ASCII) 错误,造成这个错误是因为Ruby1.9默认用ASCII编码来读源码的,如果代码里有非ASCII字符,就会发生这个错误。解决的方法是在有非ASCII字符文件的首行指定encoding即可,如:

# encoding: utf-8
class ApplicationController < ActionController::Base
  protect_from_forgery
  ...........

话说每一个文件都要加是不是太麻烦点?就不能弄一个全局设定来吗?

Gentoo Rails3.1 安装笔记

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

Gentoo下ROR rails/cli (LoadError)的解决

想学习一下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 

把两个包降级后暂时解决这个问题,是新包有问题还是有其它的解决方法?