【问题标题】:ACTIVESCAFFOLD: column sorting?ACTIVESCAFFOLD:列排序?
【发布时间】:2011-08-23 11:53:12
【问题描述】:

我有 2 个模型说 'foo' 和 'bar',例如 foo has_many :bars,bar 属于 foo。而且它们都有一个“名称”字段。

active_scaffold :bar do |config|        
    config.columns = [:name, :foo_id]
    config.columns[:foo_id].label = 'Foo Name'
end

在控制器和助手中

def foo_id_column(b)
    return link_to b.foo.name, foo_url(b.foo)
end

这工作得很好,但是每当我单击表头“Foo Name”而不是按显示的名称排序时,它会按 foo_id 排序,这意味着,假设我们有 2 个 foo 对象“a”,id 为 2和 id 为 1 的“b”,然后在单击“FooName”列时,它首先显示为“b”行,然后是“a”而不是“a”,然后是“b”。如何改代码让activescaffold使用name内容而不是id进行排序?

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-plugins


    【解决方案1】:

    只要在您的模型中定义了 belongs_to/has_many 关联,ActiveScaffold 就会为您完成所有这些工作(包括按 foo.name 排序) - 无需自定义辅助方法:

    active_scaffold :bar do |config|        
        config.columns = [:name, :foo]
    end
    

    这种方式对您的数据库也更友好,因为 ActiveScaffold 将 :include 关联到列表栏的查找器中,避免了示例代码中出现的 N 查询问题(在呈现列表时分别获取每个 foo 记录条数)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-01-09
      • 2011-06-12
      • 1970-01-01
      • 1970-01-01
      • 2010-09-08
      • 2019-10-26
      • 1970-01-01
      相关资源
      最近更新 更多