【问题标题】:Saving Rails model as JSON将 Rails 模型保存为 JSON
【发布时间】:2013-02-19 03:56:57
【问题描述】:

这似乎是一个已经被问到的问题,但我找不到我正在寻找的东西,所以我会继续问。

我正在尝试使用 angular.js 在我的网站上创建即时搜索功能。我希望用户能够立即搜索帖子(最好是按标题和内容),所以在听说angular's ability to do this 之后,我试了一下。

我的 posts.js.coffee 文件中有此内容:

@PostListCtrl = ($scope, $http) ->
  $http.get("posts.json").success (data) ->
    $scope.posts = data

这发生在它引用的 JSON 文档中(只是为了确保它正在工作——它就是这样)。

data =
    [
    name: "Blog ex"
    content: "This is my example post."
    ,
    name: "Test posting"
    content: "A different ex post"
    ,
    name: "Test3"
    content: "This has some unusual, unique vocabulary."
    ]

现在我要做的就是让 Rails 在每次创建新 Post 时在上述 JSON 文件中保存一个对象(具有名称/内容属性),以便搜索实际上运行有意义的数据。我是 Rails/JSON/计算机的新手,不知道如何做到这一点。我猜它在帖子控制器中,可能在其中一个 respond_to 块中,但如果有人能指出正确的方法,我将不胜感激。

【问题讨论】:

  • 你应该重新考虑你在做什么......基本上你想在每次用户访问它时将所有博客内容数据加载到一个页面中,以便他们可以在本地搜索。您可以非常快速地搜索将数据留在服务器上并使用 AJAX。查看使用自动完成小部件,例如 jQueryUI jqueryui.com/autocomplete/#remote

标签: ruby-on-rails ruby-on-rails-3 json controller angularjs


【解决方案1】:

如果您只需要即时搜索或自动完成功能,则不应使用 Angular.js 或任何其他 JS MVC 框架。相反,请考虑按照@charliefl 的建议使用 jQuery,这很容易。一个简单的 Ajax 调用就可以完成。

JS MVC 框架很重,你需要从底层设计架构以适应它们。不值得这么单一的功能。

要让这个函数在 jQuery 中工作,基本上:

  1. 在搜索框上监听事件,比如输入一个或多个字符
  2. 捕捉字符并使用 jQuery Ajax 向 Rails 中 PostsController 中的方法发送 POST 请求,例如“搜索”
  3. 使此方法响应 JSON。
  4. 根据服务器响应更新 DOM。

【讨论】:

  • K.消息已取。我会研究你和 charliefl 的建议。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-08-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多