From a769aaedd5658e9bc1a4c543e954408efd03e978 Mon Sep 17 00:00:00 2001 From: Jeff Barriault Date: Thu, 21 Nov 2013 13:32:03 -0600 Subject: [PATCH 1/2] Remove direction select from sort_select form builder and put it into its own sort_direction helper method. --- lib/ransack/helpers/form_builder.rb | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/lib/ransack/helpers/form_builder.rb b/lib/ransack/helpers/form_builder.rb index 5b7b3eb..db86381 100644 --- a/lib/ransack/helpers/form_builder.rb +++ b/lib/ransack/helpers/form_builder.rb @@ -43,16 +43,27 @@ module Ransack @template.grouped_collection_select( @object_name, :name, sortable_attribute_collection_for_bases(bases), :last, :first, :first, :last, objectify_options(options), @default_options.merge(html_options) - ) + @template.collection_select( - @object_name, :dir, [['asc', object.translate('asc')], ['desc', object.translate('desc')]], :first, :last, - objectify_options(options), @default_options.merge(html_options) ) else collection = sortable_attribute_collection_for_base(bases.first) @template.collection_select( @object_name, :name, collection, :first, :last, objectify_options(options), @default_options.merge(html_options) - ) + @template.collection_select( + ) + end + end + + def sort_direction(options = {}, html_options = {}) + raise ArgumentError, "sort_direction must be called inside a search FormBuilder!" unless object.respond_to?(:context) + bases = [''] + association_array(options[:associations]) + if bases.size > 1 + @template.collection_select( + @object_name, :dir, [['asc', object.translate('asc')], ['desc', object.translate('desc')]], :first, :last, + objectify_options(options), @default_options.merge(html_options) + ) + else + collection = sortable_attribute_collection_for_base(bases.first) + @template.collection_select( @object_name, :dir, [['asc', object.translate('asc')], ['desc', object.translate('desc')]], :first, :last, objectify_options(options), @default_options.merge(html_options) ) From f0ab5db5121e5b63e59d3bb939705ecb86f5b336 Mon Sep 17 00:00:00 2001 From: Jeff Barriault Date: Tue, 26 Nov 2013 08:34:06 -0600 Subject: [PATCH 2/2] refactor so we don't create a breaking change --- lib/ransack/helpers/form_builder.rb | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/lib/ransack/helpers/form_builder.rb b/lib/ransack/helpers/form_builder.rb index db86381..702b8ea 100644 --- a/lib/ransack/helpers/form_builder.rb +++ b/lib/ransack/helpers/form_builder.rb @@ -34,8 +34,13 @@ module Ransack ) end end - + def sort_select(options = {}, html_options = {}) + sort_attribute_select(options, html_options) + + sort_direction_select(options, html_options) + end + + def sort_attribute_select(options = {}, html_options = {}) raise ArgumentError, "sort_select must be called inside a search FormBuilder!" unless object.respond_to?(:context) options[:include_blank] = true unless options.has_key?(:include_blank) bases = [''] + association_array(options[:associations]) @@ -53,7 +58,7 @@ module Ransack end end - def sort_direction(options = {}, html_options = {}) + def sort_direction_select(options = {}, html_options = {}) raise ArgumentError, "sort_direction must be called inside a search FormBuilder!" unless object.respond_to?(:context) bases = [''] + association_array(options[:associations]) if bases.size > 1