Major realization -- I never created a controller class for ProjectFileSet. Now that I have that, spinner goes away, and the object is created!
On Jul 18, 10:31 pm, Montgomery Kosma <[email protected]> wrote: > I have taken this a step closer, basing my second attempt on hobo's > has-many-checkbox-editor. But still all I get is a spinner and no new > object created. > > The problem seems to be that object_url(new.class, :method => :post) > is returning nil. new does, in fact, contain the correct object. > > Why is that? > > <def tag="file-set-checkbox-editor" attrs="update, message"><%= > raise HoboError.new("no update specified") unless update > > fields = { "project_id"=> "#...@project_custodian.project.id}", > "file_set_id" => "#{this.id}" } > conditions = fields.map{|k,v|"#{k}=#{v}"}.join " AND " > > obj = ProjectFileSet.find(:first, :conditions => conditions) > > checkbox_attrs = {:type =>'checkbox'} > > if obj == nil > new = ProjectFileSet.new(fields) > permission = if can_create?(new) > class_name = new.class.name.underscore > ajax_options = { :message => message, :spinner_next_to => > Hobo.raw_js("this") } > ajax_options[:params] = { class_name => fields } unless > fields.empty? > checkbox_attrs[:onclick] = ajax_updater(object_url > (new.class, :method => :post), update, ajax_options) > end > else > permission = if can_delete?(obj) > checkbox_attrs[:checked] = 'checked' > message ||= "Unsetting #{obj.class.name.titleize}" > class_name = obj.class.name.underscore > checkbox_attrs[:onclick] = ajax_updater(object_url(obj, :method > => :delete), update, {:message => message, :method => 'delete'}) > end > end > element(:input, add_classes(attributes.merge(checkbox_attrs), > "checkbox_input file_set_checkbox")) if > permission > %></def> > > On Jul 18, 1:04 pm, Montgomery Kosma <[email protected]> wrote: > > > I have created a nifty page adapting table-plus to show all the > > datasets for an employee, with a checkbox next to each one that > > indicates whether that dataset is part of the current project. > > > Last step is getting the checkbox to create or destroy the association > > object in the join table (ProjectDataSets). > > > I am stuck on where to put in the create / destroy code. Using the > > debugger, it seems ajax_updater is called only when the page is > > rendered, not when the checkbox is clicked. But clearly something is > > happening, since I'm getting a spinner... > > > Here's my tag (based on hobo's boolean-checkbox-editor): > > > <def tag="checkbox-association-editor" attrs="update, message"><% > > raise HoboError.new("Not allowed to edit") unless can_edit? > > f = ajax_updater(object_url(this_parent, :method => :put), > > update, > > :method => "put", > > :message => message, > > :spinner_next_to => Hobo.raw_js("this"), > > :params => { this_parent.class.name.underscore => { > > this_field => Hobo.raw_js('this.checked') > > } }) > > %> > > <input type="checkbox" value="1" onclick="#{f}" merge-attrs /> > > > </def> --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Hobo Users" 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/hobousers?hl=en -~----------~----~----~----~------~----~------~--~---
