aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTeddy Wing2017-09-01 16:04:59 +0200
committerTeddy Wing2017-09-01 16:04:59 +0200
commit28db706443a912e8355e4c48488dc40c403e7f76 (patch)
treeb2eee6e7c47348ee632daed8d2edb8eaf7c7eea9
parentb546fc6ef6d406a041f5a26f5855a02b7c8d1f2c (diff)
downloadchouette-core-28db706443a912e8355e4c48488dc40c403e7f76.tar.bz2
TableBuilderHelper::Column#link_to: Allow arbitrary number of arguments
This enables us to pass multiple objects into the lambda, so that we can for example build a URL using a Rails helper using multiple objects. Example: column.link_to(referential, item) lambda do |referential, item| some_path(referential, item) end
-rw-r--r--app/helpers/table_builder_helper/column.rb4
-rw-r--r--spec/helpers/table_builder_helper/column_spec.rb14
2 files changed, 16 insertions, 2 deletions
diff --git a/app/helpers/table_builder_helper/column.rb b/app/helpers/table_builder_helper/column.rb
index b4c569882..5834cbc4e 100644
--- a/app/helpers/table_builder_helper/column.rb
+++ b/app/helpers/table_builder_helper/column.rb
@@ -35,8 +35,8 @@ module TableBuilderHelper
!@link_to.nil?
end
- def link_to(obj)
- @link_to.call(obj)
+ def link_to(*objs)
+ @link_to.call(*objs)
end
end
diff --git a/spec/helpers/table_builder_helper/column_spec.rb b/spec/helpers/table_builder_helper/column_spec.rb
index e0bfd8a6a..1366d8c46 100644
--- a/spec/helpers/table_builder_helper/column_spec.rb
+++ b/spec/helpers/table_builder_helper/column_spec.rb
@@ -58,5 +58,19 @@ describe TableBuilderHelper::Column do
).link_to(train)
).to eq('TGV')
end
+
+ it "takes any number of arguments" do
+ train = double('train', kind: 'Shinkansen')
+
+ expect(
+ TableBuilderHelper::Column.new(
+ name: 'unused',
+ attribute: nil,
+ link_to: lambda do |prefix, train|
+ "#{prefix}: #{train.kind}"
+ end
+ ).link_to('Type', train)
+ ).to eq('Type: Shinkansen')
+ end
end
end