module FormModule
class Field
include FieldModule
- attr :form, :field_name, :field_manifest,
- :label, :tag, :helpers, :options
- def initialize form, field_name, field_manifest
+ attr :form, :field_name_with_sub_form, :field_manifest,
+ :label, :tag, :helpers, :options,
+ :field_name, :sub_form_names
+ def initialize form, field_name_with_sub_form, field_manifest
@form = form
- @field_name = field_name
+ @field_name_with_sub_form = field_name_with_sub_form
@field_manifest = field_manifest
@label = LabelFactory.factory self, @field_manifest.label
@tag = TagFactory.factory self, @field_manifest.tag
@helpers[helper_name] = HelperFactory.factory self, helper_manifest
}
@options = {'data-model' => @field_manifest.form_name}
+ @sub_form_names = @field_name_with_sub_form.split '.'
+ @field_name = @sub_form_names.pop
end
def mounted
end
def item
- @form.item
+ i = @form.item
+ @sub_form_names.each do |n|
+ i = i.__send__(n) # has_many associate model does not work
+ end
+ i
end
def value
self.item.field_tag_attributes(@field_manifest.column_name, tag_options).merge(self.mount_option)
end
+ def sub_form_name
+ @sub_form_names.map{|name| '[' + name + '_attributes' + ']'}.join
+ end
+
def form_field_name
- @field_manifest.form_field_name
+ @form.form_name + self.sub_form_name + '[' + @field_name + ']'
end
def form_name