Thanks guys - am new to ActiveScaffold and this thread was a big help!

On Sep 4, 6:56 am, greghauptmann <[EMAIL PROTECTED]> wrote:
> Just saw your post then Sergio as I am about to post the below :)
> I'd basically done what you've suggested with more to handle :order as
> well as :conditions.
>
> module TransactionHelper
>   def options_for_association_conditions(association)
>     if association.name == :category
>       {:conditions => ['active = 1 OR active is null'], :order => 'id
> asc'}
>     else
>       super
>     end
>   end
> end
>
> module ActiveScaffold
>   module Helpers
>     module Associations
>       # Provides a way to honor the :conditions on an association
> while searching the association's klass
>       def association_options_find(association, conditions = nil)
>         find_conditions = conditions
>         find_order = nil
>         if (conditions && conditions.length > 1)
>           find_conditions = conditions[:conditions] || nil
>           find_order = conditions[:order] || nil
>         end
>         association.klass.find(:all, :conditions =>
> controller.send(:merge_conditions, find_conditions,
> association.options[:conditions]), :order => find_order)
>       end
>
>       def association_options_count(association, conditions = nil)
>         find_conditions = conditions
>         if (conditions && conditions.length > 1)
>           find_conditions = conditions[:conditions] || nil
>         end
>         association.klass.count(:all, :conditions =>
> controller.send(:merge_conditions, find_conditions,
> association.options[:conditions]))
>       end
>
>       # returns options for the given association as a collection of
> [id, label] pairs intended for the +options_for_select+ helper.
>       def options_for_association(association)
>         available_records = association_options_find(association,
> options_for_association_conditions(association))
>         available_records ||= []
>         #available_records.sort{|a,b| a.to_label <=>
> b.to_label}.collect { |model| [ model.to_label, model.id ] }
>         available_records.collect { |model| [ model.to_label,
> model.id ] }
>       end
>
>       def options_for_association_count(association)
>         association_options_count(association,
> options_for_association_conditions(association))
>       end
>
>       # A useful override for customizing the records present in an
> association dropdown.
>       # Should work in both the subform andform_ui=>:select modes.
>       # Check association.name to specialize the conditions per-
> column.
>       def options_for_association_conditions(association)
>         return nil if association.options[:through]
>         case association.macro
>           when :has_one, :has_many
>             # Find only orphaned objects
>             "#{association.primary_key_name} IS NULL"
>           when :belongs_to, :has_and_belongs_to_many
>             # Find all
>             nil
>         end
>       end
>     end
>   end
> end
>
> On Sep 3, 8:03 pm, "Sergio Cambra .:: entreCables - Symbol Servicios
> Informáticos S.L. ::." <[EMAIL PROTECTED]> wrote:
>
> > You can override options_for_association like you do with
> > options_for_association_conditions
>
> > def options_for_association(association)
> >    available_records = association_options_find(association,
> > options_for_association_conditions(association))
> >    available_records ||= []
> >    available_records.sort{|a,b| a.to_label <=> b.to_label}.collect { 
> > |model| [
> > model.to_label, model.id ] }
> > end
>
> > You can use something like this:
> > def options_for_association(association)
> >   if association.name == :category
> >      available_records = association_options_find(association,
> > options_for_association_conditions(association))
> >      available_records ||= []
> >      available_records.sort{|a,b| a.to_label <=> b.to_label}.collect { 
> > |model|
> > [ model.to_label, model.id ] }
> >   else
> >     super
> >   end
> > end
>
> > You can change the line which does the sorting
>
> > El Tuesday 02 September 2008 08:37:11 greghauptmann escribió:
>
> > > but I'm filtering on the records for one of the associations, and
> > > using the helper method "options_for_association_conditions"?  So it
> > > seems that the output of this method is for the ":conditions"..... So
> > > my "app/helpers/transaction_helper.rb" file looks like the below.
> > > Again my aim again is to get sorting on the drop down list for this
> > > "category" association...
>
> > > ==========================
> > > module TransactionHelper
> > >   def category_column(record)
> > >     Category.find(:all, :conditions => 'active = true')
> > >   end
>
> > >   def options_for_association_conditions(association)
> > >     if association.name == :category
> > >       ['active = 1 OR active is null']
> > >     else
> > >       super
> > >     end
> > >   end
>
> > > end
> > > ==========================
>
> > > On Sep 2, 2:14 pm, Sri Sri <[EMAIL PROTECTED]> wrote:
> > > > Try :order.
> > > > ....find(:all, :conditions => "", :order => "")
>
> > > > greghauptmann wrote:
> > > > > thanks for this thread re how to filter down the number of records in
> > > > > a SELECT.    Is there a way however to be able to modify the SORT
> > > > > ORDER of the pull down list?   I tried putting a "order by" in the
> > > > > options_for_association_conditions however the SQL generated doesn't
> > > > > work, as it is creating a "where( xxx )" in brackets.
>
> > > > > Any ideas how to get sorting on a field drop down list for an
> > > > > association working?  (i.e. without having to do a full field
> > > > > override)
>
> > > > > tks
>
> > --
> > Sergio Cambra .:: entreCables - Symbol Servicios Informáticos S.L. ::.
> > Nicolás Guillén 6, locales 2 y 3. 50.018 Zaragoza
> > T) 902 021 404 F) 976 52 98 07 E) [EMAIL PROTECTED]
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"ActiveScaffold : Ruby on Rails plugin" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/activescaffold?hl=en
-~----------~----~----~----~------~----~------~--~---

  • Re... greghauptmann
    • ... Sri Sri
    • ... Sri Sri
      • ... greghauptmann
        • ... Sri Sri
        • ... Sergio Cambra .:: entreCables - Symbol Servicios Informáticos S.L. ::.
          • ... greghauptmann
            • ... cub
    • ... omer

Reply via email to