From 87272e97394388cc5220a4724686f0b74420af3c Mon Sep 17 00:00:00 2001 From: Tima Maslyuchenko Date: Mon, 18 Feb 2013 16:22:27 +0200 Subject: [PATCH] allowing specify helper to generate link_to_add and link_to_remove --- lib/nested_form/builder_mixin.rb | 12 ++++++++---- vendor/assets/javascripts/jquery_nested_form.js | 4 ++-- vendor/assets/javascripts/prototype_nested_form.js | 4 ++-- 3 files changed, 12 insertions(+), 8 deletions(-) diff --git a/lib/nested_form/builder_mixin.rb b/lib/nested_form/builder_mixin.rb index cb476160..79dc630c 100644 --- a/lib/nested_form/builder_mixin.rb +++ b/lib/nested_form/builder_mixin.rb @@ -28,11 +28,13 @@ def link_to_add(*args, &block) reflection = object.class.reflect_on_association(association) reflection.klass.new end + + helper = options.delete(:helper) || :link_to options[:class] = [options[:class], "add_nested_fields"].compact.join(" ") options["data-association"] = association options["data-blueprint-id"] = fields_blueprint_id = fields_blueprint_id_for(association) - args << (options.delete(:href) || "javascript:void(0)") + args << (options.delete(:href) || "javascript:void(0)") if helper == :link_to args << options @fields ||= {} @@ -43,7 +45,7 @@ def link_to_add(*args, &block) blueprint[:"data-blueprint"] = fields_for(association, model_object, options, &block).to_str @template.content_tag(:div, nil, blueprint) end - @template.link_to(*args, &block) + @template.send helper, *args, &block end # Adds a link to remove the associated record. The first argment is the name of the link. @@ -65,10 +67,12 @@ def link_to_remove(*args, &block) md = object_name.to_s.match /(\w+)_attributes\]\[[\w\d]+\]$/ association = md && md[1] options["data-association"] = association + + helper = options.delete(:helper) || :link_to - args << (options.delete(:href) || "javascript:void(0)") + args << (options.delete(:href) || "javascript:void(0)") if helper == :link_to args << options - hidden_field(:_destroy) << @template.link_to(*args, &block) + hidden_field(:_destroy) << @template.send(helper, *args, &block) end def fields_for_with_nested_attributes(association_name, *args) diff --git a/vendor/assets/javascripts/jquery_nested_form.js b/vendor/assets/javascripts/jquery_nested_form.js index 3b8a5b39..f43fb9bc 100644 --- a/vendor/assets/javascripts/jquery_nested_form.js +++ b/vendor/assets/javascripts/jquery_nested_form.js @@ -74,8 +74,8 @@ window.nestedFormEvents = new NestedFormEvents(); $(document) - .delegate('form a.add_nested_fields', 'click', nestedFormEvents.addFields) - .delegate('form a.remove_nested_fields', 'click', nestedFormEvents.removeFields); + .delegate('form .add_nested_fields', 'click', nestedFormEvents.addFields) + .delegate('form .remove_nested_fields', 'click', nestedFormEvents.removeFields); })(jQuery); // http://plugins.jquery.com/project/closestChild diff --git a/vendor/assets/javascripts/prototype_nested_form.js b/vendor/assets/javascripts/prototype_nested_form.js index 5261755b..08c442ce 100644 --- a/vendor/assets/javascripts/prototype_nested_form.js +++ b/vendor/assets/javascripts/prototype_nested_form.js @@ -1,5 +1,5 @@ document.observe('click', function(e, el) { - if (el = e.findElement('form a.add_nested_fields')) { + if (el = e.findElement('form .add_nested_fields')) { // Setup var assoc = el.readAttribute('data-association'); // Name of child var blueprint = $(el.readAttribute('data-blueprint-id')); @@ -43,7 +43,7 @@ document.observe('click', function(e, el) { }); document.observe('click', function(e, el) { - if (el = e.findElement('form a.remove_nested_fields')) { + if (el = e.findElement('form .remove_nested_fields')) { var hidden_field = el.previous(0), assoc = el.readAttribute('data-association'); // Name of child to be removed if(hidden_field) {