diff options
author | Matthew Draper <matthew@trebex.net> | 2018-08-22 23:39:07 +0930 |
---|---|---|
committer | Matthew Draper <matthew@trebex.net> | 2018-08-23 00:08:35 +0930 |
commit | 047a893da7a43b8e115b854c73735b9e6475838e (patch) | |
tree | 66cef1a720dfa5cf9f1f4f35f117da9ae7c6e66d /actionview/lib | |
parent | 9eee4c1ed92050edbee08f16be78d355fb19c2f5 (diff) | |
parent | 0853cdffa2f09f02e854baed35c3323b6b35006f (diff) | |
download | rails-047a893da7a43b8e115b854c73735b9e6475838e.tar.gz rails-047a893da7a43b8e115b854c73735b9e6475838e.tar.bz2 rails-047a893da7a43b8e115b854c73735b9e6475838e.zip |
Merge pull request #33547 from Ana06/patch-1
Use public_send in value_for_collection
Diffstat (limited to 'actionview/lib')
-rw-r--r-- | actionview/lib/action_view/helpers/form_options_helper.rb | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/actionview/lib/action_view/helpers/form_options_helper.rb b/actionview/lib/action_view/helpers/form_options_helper.rb index 7884a8d997..2b9d55a019 100644 --- a/actionview/lib/action_view/helpers/form_options_helper.rb +++ b/actionview/lib/action_view/helpers/form_options_helper.rb @@ -794,7 +794,7 @@ module ActionView def extract_values_from_collection(collection, value_method, selected) if selected.is_a?(Proc) collection.map do |element| - element.send(value_method) if selected.call(element) + public_or_deprecated_send(element, value_method) if selected.call(element) end.compact else selected @@ -802,7 +802,15 @@ module ActionView end def value_for_collection(item, value) - value.respond_to?(:call) ? value.call(item) : item.send(value) + value.respond_to?(:call) ? value.call(item) : public_or_deprecated_send(item, value) + end + + def public_or_deprecated_send(item, value) + item.public_send(value) + rescue NoMethodError + raise unless item.respond_to?(value, true) && !item.respond_to?(value) + ActiveSupport::Deprecation.warn "Using private methods from view helpers is deprecated (calling private #{item.class}##{value})" + item.send(value) end def prompt_text(prompt) |