Ruby on rails 如何在Rails应用程序中模仿类似AJAX的行为,但从服务器发起请求?

Ruby on rails 如何在Rails应用程序中模仿类似AJAX的行为,但从服务器发起请求?,ruby-on-rails,ajax,ruby-on-rails-3,Ruby On Rails,Ajax,Ruby On Rails 3,我有一个Rails应用程序,我在其中创建了一系列过滤器供用户单击(复选框)。当用户单击它们时,我想启动对数据库的请求并更新显示的数据 我目前已经用客户端Javascript实现了这一点。我监听过滤器中的更改,并向服务器发起AJAX请求。当数据返回时,我只是直接使用JS更新HTML 但是,我现在希望请求来自服务器上的Rails应用程序,这样我就可以确保只向数据库发出授权请求 我如何才能模拟相同的行为:监听UI小部件上的更改事件;提出请求;并在启动服务器请求的同时就地更新页面?如果您想使用Rails

我有一个Rails应用程序,我在其中创建了一系列过滤器供用户单击(复选框)。当用户单击它们时,我想启动对数据库的请求并更新显示的数据

我目前已经用客户端Javascript实现了这一点。我监听过滤器中的更改,并向服务器发起AJAX请求。当数据返回时,我只是直接使用JS更新HTML

但是,我现在希望请求来自服务器上的Rails应用程序,这样我就可以确保只向数据库发出授权请求


我如何才能模拟相同的行为:监听UI小部件上的更改事件;提出请求;并在启动服务器请求的同时就地更新页面?

如果您想使用Rails服务器作为代理连接到另一台服务器,则可以使用内置库或类似gems或具有其他功能的gems

这通常在调用外部API时完成

您可以使用rails中的模型,这些模型通过使用未绑定到ActiveRecord

#注意这不应该继承自
#ActiveRecord::Base
类应用程序模型
包括ActiveModel::Model
包括HTTParty
基本uri“example.com/api”
结束
类对象<应用程序模型
def自我查找(id)
self.new(get(“/2.2/things/”+id,options))
结束
定义自身所有(*选项)
#吸引
response=get(“/2.2/things”,选项)
response.map do|r|
自我更新(r)
结束
结束
结束

本例使用HTTParty连接到虚构的API。

启动什么请求?由谁/什么授权?这个问题没有意义,因为在这两种情况下,客户都在发起行动。虽然您可以使用WebSocket创建一个双向连接,服务器可以将数据推送到客户端,但这通常用于聊天室、股票行情和“实时”更新,其中服务器会通知客户端服务器上发生了什么事情。我的意思是我希望在服务器上启动请求。我希望服务器请求数据,并更新部分或其他内容以向用户显示数据。仍然没有意义,因为只有您的服务器向数据库发出请求。有三件事:服务器上的my Rails应用程序、不直接绑定到我的应用程序的完全独立的数据库以及客户端计算机。目前,我使用Javascript从客户机向数据库发出AJAX请求。我想将此请求移动到由服务器上的Rails应用程序发起的。我不知道为什么这不合理,但很明显我没有解释清楚。谢谢。行为的另一部分如何:每当用户更新UI中过滤器的值时,我都会再次发出请求,而不会重新加载页面。可能吗?
# note that this should not inherit from
# ActiveRecord::Base
class ApplicationModel
  include ActiveModel::Model
  include HTTParty

  base_uri 'example.com/api'
end

class Thing < ApplicationModel

  def self.find(id)
    self.new( get("/2.2/things/"+ id, options) )
  end

  def self.all(*options)
    # fetches
    response = get("/2.2/things", options)
    response.map do |r|
      self.new(r)
    end
  end
end