Does rails have a way to easily implement droppables for dynamically changing lists. I''d like to be able to take my database of employees, and my database of projects for that day and assign employees to projects by dropping them onto the project. My problem is, the projects are different every day, so I need to figure out how to create my groups dynamically. Thanks --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk -~----------~----~----~----~------~----~------~--~---
On 9/19/06, Garrett <garrett-UklrVgepNQgYkl5+HhvCNA@public.gmane.org> wrote:> > Does rails have a way to easily implement droppables for dynamically > changing lists. I''d like to be able to take my database of employees, > and my database of projects for that day and assign employees to > projects by dropping them onto the project. My problem is, the > projects are different every day, so I need to figure out how to create > my groups dynamically. > > Thanks >What I have done in these cases is to create a helper function that inserts the appropriate javascript block and call that function once for each droppable. Not the use of the :with parameter in the link_to_remote call. This will be executed as javascript in the context of the onDrop callback, this is how I get the id of the dropped employee. Code is untested, so there are likely some bugs in there, but the general idea works. class SomeHelper def project_drop_target(project) html = <<-HTML <script>Droppables.add( "project_#{project.id}", { onDrop: function(element) { #{link_to_remote :update=>''project_''+project.id, :url=>{:controller=>''projects'',:action=>''add_employee'', :id=>project.id}, :with=>''employee_id=element.employee_id''} } } ); </script> HTML end def employee_draggable(employee) html = <<-HTML <script> $(''employee_#{employee.id}'').employee_id=#{employee.id}; Draggable.new( ''employee_#{employee_id}'' ); </script> HTML end end And in your view: <% for project in @projects %> <div id="project_<%=project.id%>"> Some project details here </div> <%= project_drop_target project %> <% end %> <% for employee in @employees %> <div id="employee _<%=employee .id%>"> Some employee details here </div> <%= employee_draggable employee %> <% end %> --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk -~----------~----~----~----~------~----~------~--~---
Thanks... I can tell this is exactally what I need, but I can''t get the Injection of the javascript to work. My header is <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>Build: index</title> <link href="/stylesheets/scaffold.css?1158610272" media="screen" rel="Stylesheet" type="text/css" /> <link href="/stylesheets/datagrid.css?1157134014" media="screen" rel="Stylesheet" type="text/css" /> <script src="/javascripts/prototype.js?1154117827" type="text/javascript"></script> <script src="/javascripts/effects.js?1154117827" type="text/javascript"></script> </head> How do I get the Javascript to properly inject? --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk -~----------~----~----~----~------~----~------~--~---
<snip>> > How do I get the Javascript to properly inject? >Going back through my code. I realized the snippet I posted has some bugs. Try: Droppables.add("bucket_#{bucket.id}", { onDrop:function(element){ #{remote_function(:update=>"project_#{project.id}, :url=>{:controller=>''projects'', :action=>''add_employee'', :id=>project}, :with=>"''dropped='' + element.employee_id")} } } ); Note the :with parameter changes to :with=>"''dropped='' + element.employee_id". Let me know if that works, if not, please post the full html source of the generated page. Cheers, Max --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk -~----------~----~----~----~------~----~------~--~---
Sorry for the delay when I run the new piece of code I get a syntax error. The little arrow shows the error on the close parenthesis behind element.employee_id. If I only remove the # at {remote_function I get "can''t find string "HTML" anywhere before EOF" app/helpers/schedule_helper.rb:11: syntax error :id=>project}, :with=>"''dropped='' + element.employee_id")} --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk -~----------~----~----~----~------~----~------~--~---
Droppables.add("bucket_#{bucket.id}", { onDrop:function(element){ #{remote_function(:update=>"project_#{project.id}", :url=>{:controller=>''projects'', :action=>''add_employee'', :id=>project}, :with=>"''dropped='' + element.employee_id")} } } ); There was a missing " after "project_#{project.id}" the #{something} is a string replacement notation the # in that case it not a comment. Give it another try. Max On 9/29/06, Garrett <garrett-UklrVgepNQgYkl5+HhvCNA@public.gmane.org> wrote:> > Sorry for the delay when I run the new piece of code I get a syntax > error. The little arrow shows the error on the close parenthesis > behind element.employee_id. If I only remove the # at {remote_function > I get "can''t find string "HTML" anywhere before EOF" > > app/helpers/schedule_helper.rb:11: syntax error > :id=>project}, :with=>"''dropped='' + element.employee_id")} > > > > >--~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk -~----------~----~----~----~------~----~------~--~---
I figured it out. There were a few bugs in your code, but I fixed them. Also the javascript for add employee is completely incorrect, simply using the rails built in method works great. <%= draggable_element "employee_#{employee.id}", :revert => true %> Thanks for your help --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk -~----------~----~----~----~------~----~------~--~---
Oh and <%= drop_receiving_element("task_#{task.id}", :url => { :controller => "tasks", :action => "add_employee" }) %> --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk -~----------~----~----~----~------~----~------~--~---