class Interview::NestedFormAddLink
Public Instance Methods
build(b)
click to toggle source
# File lib/interview/controls/nested_form_add_link.rb, line 4 def build(b) form_builder = find_attribute! :form_builder assoc_method = find_attribute!(:assoc_method).to_sym text = h.t('views.nested_form_add', association: find_attribute!(:singular_title)) html = render_form(b, form_builder, assoc_method) b.link capion: text, html_options: { href: '#', class: 'nested_form_add_link', data: { content: CGI::escapeHTML(html) } } end
Protected Instance Methods
render_form(b, form_builder, assoc_method, new_object=nil)
click to toggle source
# File lib/interview/controls/nested_form_add_link.rb, line 14 def render_form(b, form_builder, assoc_method, new_object=nil) new_object ||= form_builder.object.association(assoc_method.to_sym).build new_object.assign_attributes(new_object.class.defaults) if new_object_assoc = new_object.class.reflect_on_all_associations.find { |a| a.foreign_key == form_builder.object.association(assoc_method.to_sym).reflection.foreign_key } new_object.association(new_object_assoc.name).target ||= form_builder.object end nested_form = find_attribute! :nested_form return form_builder.fields_for(assoc_method, new_object, :child_index => "new_association") do |builder| nested_form.render_nested_form(b, builder) end end