I have this JQuery code:
$(\"p.exclamation, div#notification_box\").live(\"mouseover\", function() {
});
and I want to call this rails
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:
<script type="text/javascript">
$(function(){
new AClass.function({
text: <%= Date.today %>
});
});
</script>
Make an AJAX call, set up a route, respond with a controller action and call your method.
# whatever.js
$("p.exclamation, div#notification_box").on("mouseover", function() {
$.ajax("/users/render_read")
});
# routes.rb
resources :users do
get :render_read, on: :collection
# or you may prefer to call this route on: :member
end
# users_controller.rb
def render_read
@current_user.render_read
# I made this part up, do whatever necessary to find the needed user here
end
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.
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:
resources :user_notifications do
collection do
put 'render_read'
end
end
Go ahead and add the render_read
action to your controller.
Your jQuery code will look something like this:
$("p.exclamation, div#notification_box").live("mouseover", function() {
$.ajax({
url: "/user_notifications/render_read",
type: 'PUT'
});
});