如何在除Create或Destroy之外的Action上使用Rails进行AJAX调用

时间:2011-07-11 17:34:47

标签: jquery sql ruby-on-rails ruby ajax

我想在一个动作上创建一个AJAX调用,让我们调用它,这样我的数据库中的一个字段就会在点击时得到更新。这是我昨天收到的回复的后续问题,所以请耐心等待,因为我很缺乏经验。

<%= button_to "Click me!", :action => "some_action", :remote => true %>
Which will send an AJAX request back to the server, in which you need to handle in your controller

def some_actoin
    // Update your database here
    respond_to do |format|
        format.js { render 'somepartial' }
    end
end

这个答案是否意味着我需要创建一个与def some_action相关联的路由?如果是这样,这条路线应该采用什么格式。

我不希望用户离开页面,我只想更新当前页面上的一个div。

2 个答案:

答案 0 :(得分:1)

你有个好的开始。当单击该按钮时,rails /服务器将向该控制器/ some_action发送HTTP请求。它将触及您需要保存到数据库的操作方法。从那里它将响应javascript(因此format.js)。它正在响应的javascript文件(假设您使用的是jquery而不是原型)将被称为some_action.js.erb。在该文件中,一旦ajax请求返回,就会放置所有要执行的jquery函数调用等。

编辑:

进一步澄清路线。您需要能够正常访问controller / some_action。这意味着需要定义一条路线:

match 'controller/some_action' => "controller#some_action"

但是你不需要做任何额外的事情来告诉rails它的远程路线。

答案 1 :(得分:1)

基本上,是的,你需要将路由添加到routes.rb文件。

因此,如果您的控制器名为posts_controller,并且您希望将特定帖子标记为:

map.resources :posts, :member => {:seen => :post}

这将添加到/ posts / 1 / seen的路由(其中'1'是执行所看到的操作的帖子的ID)