From 95f7d5237f2e03ceb496f168a1d5d40cab648b96 Mon Sep 17 00:00:00 2001 From: nathanvda Date: Thu, 3 Mar 2011 21:14:16 +0100 Subject: [PATCH] If a block is given, no link-text needs to be given as a parameter anymore. --- lib/cocoon/view_helpers.rb | 31 ++++++++++++++++++++++++------- 1 file changed, 24 insertions(+), 7 deletions(-) diff --git a/lib/cocoon/view_helpers.rb b/lib/cocoon/view_helpers.rb index 79ae81e..459f45b 100644 --- a/lib/cocoon/view_helpers.rb +++ b/lib/cocoon/view_helpers.rb @@ -3,17 +3,27 @@ module Cocoon # this will show a link to remove the current association. This should be placed inside the partial. - # + # either you give # - *name* : the text of the link # - *f* : the form this link should be placed in # - *html_options*: html options to be passed to link_to (see link_to) - # - *&block*: see link_to + # + # or you use the form without *name* with a *&block* + # - *f* : the form this link should be placed in + # - *html_options*: html options to be passed to link_to (see link_to) + # - *&block*: the output of the block will be show in the link, see link_to - def link_to_remove_association(name, f, html_options = {}, &block) + def link_to_remove_association(*args, &block) if block_given? - name = capture(&block) + f = args.first + html_options = args.second || {} + name = capture(&block) link_to_remove_association(name, f, html_options) else + name = args[0] + f = args[1] + html_options = args[2] || {} + is_dynamic = f.object.new_record? html_options[:class] = [html_options[:class], "remove_fields #{is_dynamic ? 'dynamic' : 'existing'}"].compact.join(' ') f.hidden_field(:_destroy) + link_to(name, '#', html_options) @@ -35,11 +45,18 @@ module Cocoon # - *html_options*: html options to be passed to link_to (see link_to) # - *&block*: see link_to - def link_to_add_association(name, f, association, html_options = {}, &block) + def link_to_add_association(*args, &block) if block_given? - name = capture(&block) - link_to_add_association(name, f, association, html_options) + f = args[0] + association = args[1] + html_options = args[2] || {} + link_to_add_association(capture(&block), f, association, html_options) else + name = args[0] + f = args[1] + association = args[2] + html_options = args[3] || {} + html_options[:class] = [html_options[:class], "add_fields"].compact.join(' ') html_options[:'data-association'] = association.to_s.singularize