rabaukendisko
2008-Jun-25 18:56 UTC
scriptaculous - dynamic number of categories with sortables
hello, i''m new to ruby on rails and am trying to use scriptaculous to sort list items (notes) into categories - the number of these categories is dynamic. the number of the sortables (notes) is also dynamic. i read the tips on this website: http://jotsandsketches.com/?p=199 and according to that i wrote the following code: ---------------------------------------------------------------------------------------------------------------------------------------------------- html.erb ---------------------------------------------------------------------------------------------------------------------------------------------------- <ul id="category-list"> <% @categories.each do |category| %> <li class="category" id="category_<%= category.id %>"> <span><%=h category.title %></span> <span><%=h category.description %></span> <span><%=h category.user_id %></span> <span><%= link_to ''Show'', category %></span> <span><%= link_to ''Edit'', edit_category_path(category) %></span> <span><%= link_to ''Destroy'', category, :confirm => ''Are you sure?'', :method => :delete %></span> <span><%= link_to ''Add new Note'', :controller => "notes", :action => "new", :category_id => category.id %></span> <ul class="notes-list" id="notes-list_<%= category.id %>"> <% category.notes.each do |note| %> <li id="note_<%= note.id %>"> <div> <p><%=h note.title %></p> <p><%=h note.description %></p> <%= link_to ''Show'', note %> <%= link_to ''Edit'', edit_note_path(note) %> <%= link_to ''Destroy'', note, :confirm => ''Are you sure?'', :method => :delete %> </div> </li> <% end %> </ul> </li> <% end %> </ul> <% containment = [] %> <% @categories.each do |category| containment << ''notes-list_'' + category.id.to_s end %> <% @categories.each do |category| %> <%= sortable_element ''notes-list_'' + category.id.to_s , :constraint => false, :url => {:action => "sort_notes", :id => @note}, :complete => visual_effect(:highlight, ''notes-list_'' + category.id.to_s), :containment => containment %> <% end %> ---------------------------------------------------------------------------------------------------------------------------------------------------- controller ---------------------------------------------------------------------------------------------------------------------------------------------------- def sort_notes @category_list = Category.find_all_by_user_id(current_user.id) @category_list.each do |category| if params[''notes-list_'' + category.id.to_s] then sortables = params[''notes-list_'' + category.id.to_s] end end sortables.each do |id| currentitem = Note.find_by_id(id.to_i) currentitem.position = sortables.index(id) + 1 currentitem.lists_of_stuff_column_id = params[:id] currentitem.save end render :nothing => true end ---------------------------------------------------------------------------------------------------------------------------------------------------- this doesn''t work. i can drag the notes around (from one category to another, and also within the categories), but it doesn''t store changes of the position in the database. i think that maybe this line might be wrong: :url => {:action => "sort_note", :id => @note}, as i don''t really understand where the @note comes from (the controller behind the whole thing only knows @category). it would be great if someone could help me. have been trying to solve the problem for days now :( many thanks!! --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Spinoffs" group. To post to this group, send email to rubyonrails-spinoffs-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-spinoffs-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-spinoffs?hl=en -~----------~----~----~----~------~----~------~--~---
rabaukendisko
2008-Jun-26 00:27 UTC
Re: scriptaculous - dynamic number of categories with sortables
ok, so fixed it myself. working code: -------------------------------------------------- template -------------------------------------------------- <% @categories.each do |category| %> <%= sortable_element ''notes-list_'' + category.id.to_s , :constraint => false, :url => {:action => "sort_notes", :id => category.id}, :complete => visual_effect(:highlight, ''notes-list_'' + category.id.to_s), :containment => containment %> <% end %> -------------------------------------------------- controller -------------------------------------------------- def sort_notes sortables = nil @category_list = Category.find_all_by_user_id(current_user.id) @category_list.each do |category| if params[''notes-list_'' + category.id.to_s] then sortables = params[''notes-list_'' + category.id.to_s] end end sortables.each do |id| currentitem = Note.find_by_id(id.to_i) currentitem.position = sortables.index(id) + 1 currentitem.category_id = params[:id] currentitem.save end render :nothing => true end --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Spinoffs" group. To post to this group, send email to rubyonrails-spinoffs-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-spinoffs-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-spinoffs?hl=en -~----------~----~----~----~------~----~------~--~---