API:列表

Columns(字段)本地

这个字段集用于列表动作。默认的,几乎所有字段 :id, foreign keys, updated/created_on/都从 config.columns 那里继承。你可以要求哪些字段从 config.columns 继承,并且告诉Active Scaffold显示字段的顺序,如下:

# 正确的方式
config.list.columns = [:id, :name, :user_id, :created_on]     

# 错误!你知道为什么吗?
config.columns = [:name, :user_id, :created_on]
config.list.columns = [:id, :name, :user_id, :created_on]
# 提示: config.columns必须包含config.list.columns想要继承的所有
# 字段

如果你想改变字段的属性,比如标签:

# 正确的方式:
config.columns[:created_on].label = "How old"     

# 错误!不能像这样!
config.list.columns[:created_on].label = "How old"     

empty_field_text  全局、本地

当一个字段为空时,empty_field_text定义它的显示方式。这点对于有链接的字段很重要,因为如果没有一些empty_field_text,超链接就没有可以点击的区域。默认情况显示一个连字号。

label(标签) 本地

列表的标签。它们显示在表格标题部分。

per_page  全局、本地

每一页显示多少条记录。可以设置一个比较大的值,以便有效禁止分页。

sorting(排序)本地

页面的默认排序。当用户点击一个字段,他们就重写了这个排序。当用户第三次点击字段,他们将排序重置为这个值。你可以通过数据结构的快捷方式定义排序,比如 { :title => :desc } 或者[{ :title => :desc},{:subtitle => :asc}],也可以使用下面例子中方法来定义排序。

这里的排序名字引用了config.columns中的字段,并且当ActiveScaffold试图实际执行排序时,它将检查字段配置,来决定是使用方法排序还是sql排序

警告:使用方法排序的字段必须加载并对整个表格进行排序,这对大规模数据集来说是难以衡量的。尽量对sort_by :sql(按sql排序)的字段进行排序。

示例:

# 默认排序: title字段上降序排列
config.list.sorting = { :title => :desc }     

# 默认排序: 在title上按降序排序, 然后在subtitle上按升序排列
config.list.sorting = [{ :title => :desc}, {:subtitle => :asc}]                  

# 同样的事情, 只是不带那么多标点
config.list.sorting = { :title => :desc }
config.list.sorting.add :subtitle, :asc

conditions_for_collection   控制器方法

当你想给列表中使用的find(:all)添加定制条件,就可以定义这个方法。它可以以字符串或数组语法方式返回条件。并且作为控制器中的实例方法,它可以访问参数、会话以及所有标准的好东西。

示例:

def conditions_for_collection
  ['user_type IN (?)', ['admin', 'sysop']]
end

list_row_class  帮助方法,v1.1+

当你需要定制以记录的一些属性为基础,并且有<tr>或者<td>标签的样式表(CSS)类,你应该在你的帮助文件定义一个list_row_class的方法。这个方法会返回一个样式表(CSS)的类。你可以使用定制的样式表(CSS)类,并结合内置的字段类来添加你想要的风格。

示例:

# the Helper for the LedgerController
module LedgerHelper
  def list_row_class(record)
    record.transaction < 0 ? 'negative' : 'positive'
  end
end     

# in your main.css (or other)
.active-scaffold tr.negative td.amount-column {
  background-color: red;
}

修改数据的输出方式

你想要把数字定义成流的格式?或者,你想要以不同的方式定义日期(date)格式?你想要将模型的两个字段合并成一列?如果你有这些需求,请阅读字段覆盖