I have this JQuery code:
$("p.exclamation, div#notification_box").live("mouseover", function() {
});
and I want to call this rails method from inside the jQuery code as a callback:
def render_read
self.user_notifications.where(:read => false).each do |n|
n.read = true
n.save
end
end
This method is in my user model. Is there any way to do this?
It's good that you have that model code. We'll need to add a new action and make sure your route is setup. If you're using resources you'll have to add collection or member. Since you're doing an update I would choose
PUT
as the http method.Here's an example route:
Go ahead and add the
render_read
action to your controller.Your jQuery code will look something like this:
Normally JavaScript works in the client side, but it's is also possible that your application draws a javaScript function for a each client. In that case you can use the
<%=
and tags%>
in a .erb file:Make an AJAX call, set up a route, respond with a controller action and call your method.
PS: This code is for Rails 3.x and Ruby 1.9.x
You would need to set up a controller on the server side to call your
render_read
method and then you could use$.ajax
or$.post
in your jQuery to make the request.