form_for non-AR model - fields_for Array attribute doesn't iterate

У меня проблемы с тем, чтобы fields_for работал на атрибуте Array не ActiveRecord модели.

В уменьшенном виде у меня есть следующее:

models/parent.rb

class Parent
  extend ActiveModel::Naming
  include ActiveModel::Conversion
  include ActiveModel::Validations
  extend ActiveModel::Translation

  attr_accessor :bars
end

controllers/parent_controller.rb

def new_parent
  @parent = Parent.new

  @parent.bars = ["hello", "world"]
  render 'new_parent'
end

views/new_parent.html.haml

= form_for @parent, :url => new_parent_path do |f|
  = f.fields_for :bars, @parent.bars do |r|
    = r.object.inspect

С кодом, как указано выше, моя страница содержит ["hello", "world"] - то есть результат inspect, вызванного на Array, присвоенном bars. (Если опустить @parent.bars в строке fields_for, я просто получаю nil).

Как я могу заставить fields_for вести себя как для AR-ассоциации - то есть выполнять код в блоке один раз для каждого члена моего bars массива?

9
задан Chowlett 25 November 2011 в 16:37
поделиться