1

给定三个模型:

  1. 文档
  2. 资产
  3. 资产类别

一个文档接受_nested_attributes_for assets(一个文档 has_many assets),并且一个资产 belongs_to 一个资产类别。

我想为每个资产类别显示一个资产属性的字段。

我目前正在实现以下目标。控制器:

def new
  @document = Document.new
  @asset_categories = AssetCategory.all
  @asset_categories.count.times { @document.assets.build }
end

查看(此示例使用 Formtastic 提供的 semantic_fields_for 方法,但这只是对 fields_for 的一个薄包装):

i=0
f.semantic_fields_for :assets do |asset_form|
  asset_form.input :attachment, :label => @asset_categories[i].name
  asset_form.input :asset_category, :as => :hidden, :value => @asset_categories[i].id
  i+=1
end

有更清洁的方法吗?我不太喜欢临时变量 i。

4

1 回答 1

0

在控制器中:

def new
  @document = Document.new
  AssetCategory.all.each do |ac|
    @document.assets.build :asset_category_id=>ac.id
  end
end

在视图中:

f.semantic_fields_for :assets do |af|
  af.input :attachment, :label=>af.object.asset_category.name
  af.input :asset_category_id, :as => :hidden, :value => af.object.asset_category.id
end
于 2011-02-25T02:31:22.640 回答