I'm working on a project where I need to be able to mark certain objects for review or deletion. I'm using checkboxes, then using JavaScript to harvest the data from the checkboxes. I'm trying to use AJAX to send that data back to the Rails Controller but I keep getting a 404 error, and I'm not sure what I'm doing wrong.
This is the AJAX call (review_list and purge_list are both defined, I've checked):
function callHandleSelected() {
...
$.post('itemresults/handle_selected', { review: review_list, purge: purge_list },
function(data) {
alert(data);
});
}
And this is the route I wrote to match it:
post 'itemresults/handle_selected', to: 'processed_item#handle_selected'
I've tried adding as: :ajax into the route to see if that makes a difference without any luck.
The HTML element that calls the ajax function looks like so:
<button type="button" class="btn btn-normal" onclick="callHandleSelected()">Mark Selected as Reviewed and/or for Purge</button>
There is also a matching handle_selected method in my Ruby Controller. Every time I try to use the AJAX method I get the following error:
POST http://localhost:3000/itemresults/handle_selected 404 (Not Found) jquery.js?body=1:9667
jQuery.ajaxTransport.send jquery.js?body=1:9667
jQuery.extend.ajax jquery.js?body=1:9212
jQuery.each.jQuery.(anonymous function) jquery.js?body=1:9358
callHandleSelected processed_item.js?body=1:37
onclick
In case you need it, here is the controller method:
def handle_selected
review_list = params[:review]
purge_list = params[:purge]
review_list.each do |item|
item.split("_")
proc_item = ProcessedItem.find(item[1])
proc_item.reviewed = true;
proc_item.save!
end
purge_list.each do |item|
item.split("_")
proc_item = ProcessedItem.find(item[1])
proc_item.purge = true;
proc_item.save!
end
redirect_to processed_items_path()
#add alert
end
jsontoo. Also, make sure that this is the correct path for POST request. You specified that inconfig/routes.rbright?ProcessedItem.find(item[1])will throw a 404 if it doesn't find aProcessedItem