gpt4 book ai didi

ruby-on-rails - 使用 Rails 中的本地数据自动完成

转载 作者:行者123 更新时间:2023-12-04 06:24:30 28 4
gpt4 key购买 nike

在我的应用程序中,用户从自动完成的文本字段中选择火车站。由于火车站不多(约 100 个),我更希望该字段根据客户端数组的内容自动完成,而不是每次用户键入字符时都查询服务器(目标是使自动完成响应更快)。

我的问题是如何在 Rails 中以一种可维护的、非 hacky 的方式做到这一点。我目前的解决方案只是将这一行放在 index.html.erb 的底部:

<%= javascript_tag "var stations = #{Station.all.map {|s| s.name}.to_json}" %>

但这不是很好(一方面,我在处理 application.js 时必须记住“stations”变量名)。

最佳答案

您可以制作一个动态生成的 Javascript View 文件,类似于 how I show here .

基本上,如果您有 Controller 操作(例如 javascripts Controller 站操作)。它可能看起来像这样。

# in controllers/javascripts_controller.rb
def stations
@stations = Station.all
end

然后你可以像这样制作一个 JavaScript View 文件......

// in views/javascripts/stations.js.erb
var stations = <%= @stations.map(&:name).to_json %>;
// ...

该 javascript 文件可以包含您想要的任何 javascript,因此您可以将一些 application.js 代码移到那里。然后,您可以像包含任何其他 javascript 文件一样包含它。

<%= javascript_include_tag 'stations' %>

这假定它位于“javascripts”路径下,如果您有 javascripts Controller ,情况恰好就是这种情况。否则,您将必须传递完整路径。

通过向 Rails 应用程序再发出一个请求确实有缺点,但您可能会向该 js 操作添加页面缓存以优化它。

关于ruby-on-rails - 使用 Rails 中的本地数据自动完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1246696/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com