【问题标题】:How activeadmin chose correct table name in select tag for belongs_to fieldsactiveadmin 如何在 belongs_to 字段的选择标签中选择正确的表名
【发布时间】:2013-12-15 21:22:36
【问题描述】:

我使用 ActiveAdmin 作为我的管理界面。我试图了解 ActiveAdmin 如何为表选择正确的名称。例如,我有 2 个表:

class User < ActiveRecord::Base
    belongs_to :job

    attr_accessible :first_name, :last_name, ...  # other attributes
end

class Job < ActiveRecord::Base
    attr_accessible :name, :location, :is_active
end

当我使用 ActiveAdmin 并为用户管理创建新页面时,我将这一行添加到用户 form

f.input :job, :label => "Current job"

ActiveAdmin 如何理解name 属性是它必须使用的属性?

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-3 activeadmin


    【解决方案1】:

    这是 ActiveAdmin 使用 Rails 的约定优于配置约定,也称为固执己见。

    由于您的 User 模型与您的 belongs_to 指令中的 Job 模型有关系,因此 ActiveAdmin 能够确定您在表单中引用了该关系。例如,它可以告诉用户,因为用户 belongs_to :job (有一份工作),所以在弹出菜单中提供所有工作的列表供您选择是合适的。由于您使用的是 ActiveRecord(用户继承自它),它知道它可以请求数据库中的所有作业以使用 Job.all 提供一个不错的列表。它知道如何做到这一点,因为约定是模型名称大写,而文件名和关系小写。

    ActiveAdmin 使用 Formtastic gem (https://github.com/justinfrench/formtastic) 来生成表单。当 Formtastic 为集合(在本例中为 Job.all)提供对象列表时,它会在目标类中查找常用方法以提供人类可读的文本 - 它将使用 to_s、名称、描述,可能还有其他一些。您还可以在 f.input 行指定它应该使用的内容。

    虽然这些约定一开始可能会让人感到困惑,但它们最终会节省大量时间,因为您不必描述太多就可以使用该框架。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-12-12
      • 2012-08-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-11
      相关资源
      最近更新 更多