Jquery& Rails 3:从js文件运行控制器操作?

时间:2011-07-21 18:49:13

标签: jquery ruby-on-rails ruby-on-rails-3 routing controller

我想点击页面上的div来运行一定数量的javascript任务,还要在控制器上运行操作。更详细地解释:

我有一个untitled.js文件,其中我放了一堆jquery代码:

 $(function(){
$('nav li').hover(function(){
        $(this).addClass("bigger", 50);
    }, function(){
        $(this).removeClass("bigger", 50);
});

$('#notify').click(function(){
        $('.notifications').show();
});

$('#notify').click(function(){
        (some code to run a controller action)
});


 });

我想在单击#notify按钮时在“Users”控制器上运行一个名为“run_tasks”的控制器操作,并显示一个通知类。正如你在上面的代码中看到的那样,我有jquery代码用于显示已经整理好的.notifications,但我不知道该放什么“(一些代码来运行一个控制器动作)”。要提供有关控制器操作的信息,它将只运行一些我想要运行的任务,它不会重定向到新页面或任何内容。以下是用户控制器的基本格式:

 class UsersController < ApplicationController
      ....
      def run_tasks

      end
 end

我正在尝试做什么,如果是的话,我在那里放了什么jquery代码?我正在使用Rails 3.0.9和最新的jquery。

1 个答案:

答案 0 :(得分:5)

只要您有该控制器操作的路由,您可以通过使用jQuery $.get()向它发出ajax请求来使其运行。

$('#notify').click(function(){
    $('.notifications').show();
    $.get('/users/run_tasks');
});

也不需要做两个$('#notify').click(),你可以将两个语句放在一个块中(正如我在上面的代码片段中所做的那样)。

请注意,在这种情况下,.get()只是让请求在服务器上调用控制器操作并忽略结果,但您也可以使用它来处理控制器返回的数据。请参阅上面的文档链接。