如何在rails_admin中仅自定义一个字段?

20

我有一个字段,rails_admin 生成一个文本框,但我想要它使用一个 <select> 标签。我在我的初始化器中这样自定义了该字段:

RailsAdmin.config do |config|
  config.model User do
    update do
      field :state do
        partial "user_state_partial"
      end
    end
  end
end

我已经测试过它,而且它可以工作。问题是,通过这样做(我也尝试过一个编辑区块),唯一留下的字段就是我正在自定义的字段。是否有任何方法告诉rails_admin只为其他字段假定默认值?

5个回答

22
更好(而且更短)的解决方案是使用“配置”语法而不是“字段”语法。使用configure,rails_admin将为所有其他值使用默认值。
因此,例如,使用以下内容:
RailsAdmin.config do |config|
  config.model User do
    update do
      configure :state do
        partial "user_state_partial"
      end
    end
  end
end

使用该语句将允许RailsAdmin将所述局部用于 :state,但它将对所有其他字段使用默认值。

更多信息请查看:Rails Admin wiki


3
当前文档显示您可以这样做:
```html

像这样:

```
field :name do
  # snipped specific configuration for name attribute
end

include_all_fields # all other default fields will be added after, conveniently
exclude_fields :created_at # but you still can remove fields

...但它仍然会删除关联子表单。 (您可以使用“field:association_id”(而不是“field:association”)添加回belongs_to项,但我不确定如何添加has_*子表单。


2

一旦您定义了一个字段,您必须定义要使用的所有字段。默认是所有字段。

RailsAdmin.config do |config|
  config.model User do
    update do
      field :name
      field :surname
      field :state do
        partial "user_state_partial"
      end
    end
  end
end

1
我通常使用include_all_fields,然后为我的字段添加自定义配置,最后添加exclude_fields(用于像id和timestamps这样的字段)。

0

他们的文档非常好地解释了这个行为:

默认情况下,如果在部分和模型中没有找到字段,则会将模型中找到的所有字段添加到列表/编辑/导出视图中。

但是,在您使用field(field_name,field_type = found_column_type,&conf_block)或include_field或fields指定第一个字段后,此行为将被取消。

只有指定的字段将被添加。如果您不想要这种行为,请使用configure而不是field(相同的签名)。这样,该字段将不会被添加到部分中,只是被配置。

一旦进入添加指定字段模式,您可以使用exclude_fields和exclude_fields_if来排除某些特定字段:


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接