【问题标题】:Rails 4 Javascript autocomplete a json fileRails 4 Javascript自动完成一个json文件
【发布时间】:2015-08-23 14:37:07
【问题描述】:

我想构建一个航空货运应用程序。我希望每件货物都连接到一个目的地机场。

我找到了this JSON 文件。示例:

"iata": "FOB",
"lon": "-123.79444",
"iso": "US",
"status": 1,
"name": "Fort Bragg Airport",
"continent": "NA",
"type": "airport",
"lat": "39.474445",
"size": "small"
  • 我应该将 JSON 文件放在 rails 4 应用程序的什么位置?
  • 如何在“iata”和“name”字段中自动填充机场?
  • 考虑到文件的大小(~1.7mb),我应该使用“过滤方法”以外的哪种方法,最好是在 reactjs 中?

【问题讨论】:

    标签: json ruby-on-rails-4


    【解决方案1】:

    首先,我将创建一个rake task 或类似的东西来将 JSON 运行到专用数据库表(例如名为 Airport 的模型)。 Here 是一些将 JSON 运行到数据库的示例。这样,您还可以在机场数据发生变化时更新机场数据,并且搜索变得更加容易,因为您可以使用 ActiveRecord。

    其次,我可能会将 JSON 文件放在 config/ 文件夹下。

    最后是关于自动完成。由于您没有太明确地告诉您希望从自动完成中得到什么,例如,您可以使用 jQuery-Autocomplete 来编写类似这样的内容

    $('#autocomplete').autocomplete({
      lookup: function (query, done) {
        // Do ajax call with the query
        $.ajax("www.your-api.com/search?query=" + query).done(function (data) {
          done({result: data});
        });
      },
      onSelect: function (suggestion) {
        alert('You selected: ' + suggestion.value + ', ' + suggestion.data);
      }
    });
    

    很难就如何进行自动完成给出更好的说明,但这样您无论如何都可以通过 2 个不同的字段自动完成。

    【讨论】:

    • 感谢您的回答。鉴于有超过 6000 个机场,从数据库中获取记录是否比从文件中搜索 JSON 对象更快?我的计划:创建一个Cargo 表,在那里创建一个iata 字段以引用机场。我将iata 视为一个类别,这样每次我搜索Cargo.where("iata = ?", params[:from_json]) 时都会显示所有货物。这意味着我只需要“iata”和“name”,在这种情况下,您是否仍然建议将 JSON 数据迁移到数据库?
    • 进一步解释我的计划: 1.通过搜索关键字列出一系列相关机场; 2. 点击后,一个 JSON 对象翻转,机场name 停留在输入字段中,而iata 用于搜索货物。
    • @Thequestioner:我认为数据库速度更快,尤其是在正确索引时(可能至少是 IATAname,因为您正在搜索不断基于它们)为您的餐桌设置。使用这种 db 方法,您可以编写类似 Cargo.joins(:airports).where('airports.iata = ? or airports.name = ?', params[:iata], params[:name]) 的内容来获取自动完成的建议。对于您的第二条评论,第 1 点应该已经讨论过了。第 2 点也很容易以这种方式实现,因为所有数据都可以在前端用于这些目的。
    • 谢谢,那我会使用数据库的方法。
    猜你喜欢
    • 2017-02-07
    • 1970-01-01
    • 2015-03-07
    • 2015-01-08
    • 1970-01-01
    • 1970-01-01
    • 2011-02-26
    • 2010-10-29
    • 1970-01-01
    相关资源
    最近更新 更多