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



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

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

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

如何模拟相同的行为:侦听 UI 小部件上的更改事件;发出请求;并就地更新页面,同时从服务器发起请求?

如果你想使用你的Rails服务器作为代理连接到另一个服务器,你可以使用内置的Net::HTTP库或像Faraday或HTTParty这样的宝石,它们有额外的功能。

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

您可以使用 ActiveModel::Model 在与 ActiveRecord 无关的边栏中使用模型。

# 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 

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

最新更新