我想在一个动作上创建一个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。
答案 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)