Probbaly not the most elegant solution but it does the job.

def surveys_form_column(record, input_name)
  associated_options = record.send("surveys").collect {|r|
[r.to_label, r.id]}
  select_options = Survey.find(:all).collect {|r| [r.to_label, r.id,
r.score]}

  return 'no options' if select_options.empty?
  html = "<ul class=\"checkbox-list\" id=\"#{record.id.to_s}\">"

  associated_ids = associated_options.collect {|a| a[1]}
  select_options.each_with_index do |option, i|
  label, id, score = option
  this_name = "record[surveys]}[#{i}][id]"
  this_id = "reord_surveys_#{i}_id"
  html << "<li>"
  html << check_box_tag(this_name, id, associated_ids.include?
(id), :id => this_id)
  html << "<label for='#{this_id}'>"
  html << "#{label} (#{score})"
  html << "</label>"
  html << "</li>"
end

On Jan 13, 1:31 pm, johnnybutler7 <[email protected]> wrote:
> Anybody?
>
> I know which piece of code i need to manipulate but im not sure how to
> do it in the
> helper.  So what ive done is copy the below from the the plugin folder
> and placed it in my helper.
>
> So i know for the first line column.association.name is effectively
> "surveys" but struggling on the rest?
>
> def surveys_form_column(record, input_name)
>         associated_options = @record.send
> (column.association.name).collect {|r| [r.to_label, r.id]}
>         select_options = associated_options | options_for_association
> (column.association)
>         return 'no options' if select_options.empty?
>
>         html = "<ul class=\"checkbox-list\" id=\"#{options[:id]}\">"
>
>         associated_ids = associated_options.collect {|a| a[1]}
>         select_options.each_with_index do |option, i|
>           label, id = option
>           this_name = "#{options[:name]}[#{i}][id]"
>           this_id = "#{options[:id]}_#{i}_id"
>           html << "<li>"
>           html << check_box_tag(this_name, id, associated_ids.include?
> (id), :id => this_id)
>           html << "<label for='#{this_id}'>"
>           html << label
>           html << "</label>"
>           html << "</li>"
>         end
>
>         html << '</ul>'
>         html << javascript_tag("new DraggableLists('#{options
> [:id]}')") if column.options[:draggable_lists]
>         html
> end
>
> On Jan 12, 9:09 am, johnnybutler7 <[email protected]> wrote:
>
> > Thanks for reply,
>
> > 1)Yes ive used helpers to override columns but cant seem to get the
> > multi-check-box to work.  Is there any examples kicking
> > about?
>
> > 2) What i mean by extra sql keys is there any way i can add custom
> > joins or an order_by clause for example in the
> > options_for_association_conditions.
>
> > So something like my example below:
> > if association.name == :surveys
> >   company_id = @record.primary_survey.user.company_id
> >    :joins => 'blah...............,
> >    :conditions => ["users.company_id = ?",company_id],
> >    :order_by => ["users.name ASC]
> >   else
> >    super
> > end
>
> > I know i could set the default order on the model but say i wanted a
> > custom order by and include another join.
>
> > At the moment it looks like we can just add conditions in
> > options_for_association_conditions as per below
>
> > def options_for_association_conditions(association)
> >  if association.name == :surveys
> >  client_id = @record.primary_survey.user_id
> > ["surveys.user_id = ?",client_id]
> >  else
> >  super
> > end
>
> > JB
>
> > On Jan 7, 3:08 pm, "mr.gaffo" <[email protected]> wrote:
>
> > > 1) Use a helper column override.
> > > 2) what do you mean by extra "sql keys"? Tables? Params mapping to ? ?
>
> > > On Jan 6, 7:32 am, johnnybutler7 <[email protected]> wrote:
>
> > > > Hi,
>
> > > > A few questions on this that im stuck on, hopefully someone can help
> > > > me out.
>
> > > > 1)I have the following code below which gives a multiple checkboxes
> > > > which is what i want,
>
> > > > config.columns[:surveys].ui_type = :select
>
> > > > I have a column called name on the surveys model which it defaults to
> > > > but i want to change this to
> > > > #{surveys.name} #{surveys.score} but i dont want to overide the
> > > > to_label method as this model is used in other active scaffolds where
> > > > i want just the name displayed and not the score.  Whats the easiest
> > > > way to this?
>
> > > > 2) For the same column i want to filter what surveys are diaplyed
> > > > depending on what the company of the user is.
> > > > So i have :
>
> > > > def options_for_association_conditions(association)
> > > >   if association.name == :surveys
> > > >    client_id = @record.primary_survey.user_id
> > > >        ["surveys.user_id = ?",client_id]
> > > >     else
> > > >       super
> > > >    end
>
> > > > This works fine however i really want it so it displays all surveys
> > > > that belong to a users company so something like:
>
> > > > def options_for_association_conditions(association)
> > > >   if association.name == :surveys
> > > >    company_id = @record.primary_survey.user.company_id
> > > >        :joins => 'blah...............,
> > > >       :conditions => ["users.company_id = ?",company_id],
> > > >     else
> > > >       super
> > > >    end
>
> > > > Is there any way to add extra sql keys aswell as the conditions?
>
> > > > thanks
>
> > > > JB
--~--~---------~--~----~------------~-------~--~----~
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
-~----------~----~----~----~------~----~------~--~---

Reply via email to