Отображение явного количества вложенных атрибутов в форме Rails - PullRequest
1 голос
/ 21 февраля 2011

Имеется три модели:

  1. Документ
  2. Актив
  3. AssetCategory

Документ Accept_nested_attributes_for активов (документ has_many assets)и актив принадлежит_ к категории активов.

Я хотел бы отобразить поле для атрибута актива для каждой категории активов.

В настоящее время я достигаю этого следующим образом,Контроллер:

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

Представление (в этом примере используется метод semantic_fields_for, предоставленный Formtastic, но это всего лишь тонкая оболочка вокруг 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.

1 Ответ

0 голосов
/ 25 февраля 2011

В контроллере:

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
...