diff options
Diffstat (limited to 'actionpack/lib/action_controller/polymorphic_routes.rb')
-rw-r--r-- | actionpack/lib/action_controller/polymorphic_routes.rb | 30 |
1 files changed, 14 insertions, 16 deletions
diff --git a/actionpack/lib/action_controller/polymorphic_routes.rb b/actionpack/lib/action_controller/polymorphic_routes.rb index 88bd7ab192..c60b533205 100644 --- a/actionpack/lib/action_controller/polymorphic_routes.rb +++ b/actionpack/lib/action_controller/polymorphic_routes.rb @@ -1,40 +1,38 @@ module ActionController module PolymorphicRoutes - extend self - - def polymorphic_url(record_or_hash, url_writer, options = {}) + def polymorphic_url(record_or_hash, options = {}) record = extract_record(record_or_hash) case when options[:action] == "new" - url_writer.send( + send( action_prefix(options) + RecordIdentifier.singular_class_name(record) + routing_type(options) ) when record.respond_to?(:new_record?) && record.new_record? - url_writer.send( + send( action_prefix(options) + RecordIdentifier.plural_class_name(record) + routing_type(options) ) else - url_writer.send( + send( action_prefix(options) + RecordIdentifier.singular_class_name(record) + routing_type(options), record_or_hash ) end end - def polymorphic_path(record_or_hash, url_writer) - polymorphic_url(record_or_hash, url_writer, :routing_type => :path) + def polymorphic_path(record_or_hash) + polymorphic_url(record_or_hash, :routing_type => :path) end %w( edit new formatted ).each do |action| - module_eval <<-EOT - def #{action}_polymorphic_url(record_or_hash, url_writer) - polymorphic_url(record_or_hash, url_writer, :action => "#{action}") + module_eval <<-EOT, __FILE__, __LINE__ + def #{action}_polymorphic_url(record_or_hash) + polymorphic_url(record_or_hash, :action => "#{action}") end - def #{action}_polymorphic_path(record_or_hash, url_writer) - polymorphic_url(record_or_hash, url_writer, :action => "#{action}", :routing_type => :path) + def #{action}_polymorphic_path(record_or_hash) + polymorphic_url(record_or_hash, :action => "#{action}", :routing_type => :path) end EOT end @@ -44,13 +42,13 @@ module ActionController def action_prefix(options) options[:action] ? "#{options[:action]}_" : "" end - + def routing_type(options) "_#{options[:routing_type] || "url"}" end - + def extract_record(record_or_hash) record_or_hash.is_a?(Hash) ? record_or_hash[:id] : record_or_hash end end -end
\ No newline at end of file +end |