diff options
| -rw-r--r-- | app/helpers/table_builder_helper/column.rb | 7 | ||||
| -rw-r--r-- | spec/helpers/table_builder_helper/column_spec.rb | 16 |
2 files changed, 22 insertions, 1 deletions
diff --git a/app/helpers/table_builder_helper/column.rb b/app/helpers/table_builder_helper/column.rb index 800a8282e..ef3c0b629 100644 --- a/app/helpers/table_builder_helper/column.rb +++ b/app/helpers/table_builder_helper/column.rb @@ -2,7 +2,7 @@ module TableBuilderHelper class Column attr_reader :key, :name, :attribute, :sortable - def initialize(key: nil, name: '', attribute:, sortable: true) + def initialize(key: nil, name: '', attribute:, sortable: true, link_to: nil) if key.nil? && name.empty? raise ColumnMustHaveKeyOrNameError end @@ -11,6 +11,7 @@ module TableBuilderHelper @name = name @attribute = attribute @sortable = sortable + @link_to = link_to end def value(obj) @@ -29,6 +30,10 @@ module TableBuilderHelper I18n.t("activerecord.attributes.#{model_key}.#{@key}") end + + def link_to(obj) + @link_to.call(obj) + end end diff --git a/spec/helpers/table_builder_helper/column_spec.rb b/spec/helpers/table_builder_helper/column_spec.rb index 0f27703b2..0c5c89e8a 100644 --- a/spec/helpers/table_builder_helper/column_spec.rb +++ b/spec/helpers/table_builder_helper/column_spec.rb @@ -20,4 +20,20 @@ describe TableBuilderHelper::Column do ).to eq('Numéro de téléphone') end end + + describe "#link_to" do + it "calls the block passed in and returns the result" do + train = double('train', kind: 'TGV') + + expect( + TableBuilderHelper::Column.new( + name: 'unused', + attribute: nil, + link_to: lambda do |train| + train.kind + end + ).link_to(train) + ).to eq('TGV') + end + end end |
