我有一个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。