So, basically my ‘index’ action is a long list of elements output as a table with Rails, each one has a checkbox next to it. These elements are items in a catalog that will be line-items in a quote.
A user can select as many checkboxes as they like, then click a button that says “Create a new Quote” it’ll take the items they checked and clone them into a new table so they can edit them as apart of the quote.
The issue I’m having is that when the list is really long, say 6000 records it’s a n awfully long list to load, so I want pagination, BUT! then my checkboxes won’t work, because they will go away if the user changes pages.
Additionally the user has no way of going back to this page to “add” more items to the quote.
My first thought was to create a new element right when they browse to this “index page and essentially have the user editing the quote from the get go”
Any ideas on this implementation? I’m a little stuck on how to get started implementing this.
This is a classic shopping cart type problem. You might want to read up on implementing those in Rails with sessions. Simple example is to use the user’s session. You can either create a class to encapsulate the logic, or just use a hash or array to hold the ids that are checked. So when the user clicks on “Start New Quote” you can set a var in their session to blank like:
Then when they check off items you can have a link to add them to the quote. You can then place those ids into the array. On page display of the possible quote items you can show the user which ones are check and have then add/remove IDs from this list. Then when the user is done they can click on a finish link which will take the ids from the session and create the quote as you have now.