使用 Profile.all 中的 Rails 字段填充 JSON 文件

发布于 2024-12-07 16:07:56 字数 599 浏览 3 评论 0原文

我在 Rails 应用程序中使用 jQuery Tokeninput 作为 tags 。我以前从未处理过 JSON(我是编程新手),但我想知道是否有一种方法可以使用 Profile.all 中的字符串值创建然后填充 json 文件。

这是我的 TagsController 中的 index

class TagsController < ApplicationController
  def index
    @tags = Tag.where("name like ?", "%#{params[:q]}%")
    respond_to do |format|
      format.html
      format.json { render :json => @tags.map(&:attributes) }
    end
  end
end

如果可能的话,有人可以告诉我如何完成它吗?如果需要更多代码,请告诉我!

说明:我想这样做的原因是将@tags限制为已存在的标签。

I'm using jQuery Tokeninput for tags in my Rails app. I have never dealt with JSON before (I'm new to programming) but I was wondering if there was a way to create then populate a json file with string values from Profile.all.

Here is the index in my TagsController:

class TagsController < ApplicationController
  def index
    @tags = Tag.where("name like ?", "%#{params[:q]}%")
    respond_to do |format|
      format.html
      format.json { render :json => @tags.map(&:attributes) }
    end
  end
end

If it is possible, can someone give me an idea of how it might be done? If more code is needed let me know!

EXPLANATION: The reason I want to do this is to limit @tags to tags that already exist.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

战皆罪 2024-12-14 16:07:56

那么,如果我理解正确的话,您发布的代码可以正常工作吗?但现在您不想将 JSON 输出流式传输到浏览器,而是将其写入文件?

看看 Rails 如何在 源代码中呈现 JSON 。它非常简单,它只需在正在渲染的任何对象上调用 to_json 函数即可。

另请查看这篇优秀的文章耶胡达·卡茨 (Yehuda Katz) 着。查找序列化部分。

现在,要将所有配置文件模型作为 JSON 保存到文件中,您可以执行以下操作:

File.open("all_profiles.json", "w") { |f| f.write(Profile.all.to_json) }

编辑

根据您添加的说明,这里有一些更多信息:

模型中某些字段的 JSON:

Profile.all.collect { |p| { :name => p.name, :city => p.city } }.to_json

这将在 Ruby 中给你一个像这样的数组:

[ {:name = "John", :city => "Liverpool"}, {:name = "Jimi", :city => "Seattle"} ]

和 JSON 像这样:

[ {"name":"John", "city":"Liverpool"}, {"name":"Jimi", "city":"Seattle"} ]

So, if I understand correctly, the code you posted works correctly? But now you don't want to stream the JSON output to the browser, but write it to a file?

Take a look at how Rails renders JSON in the source. It's pretty straightforward, it simply calls the to_json function on any object that is being rendered.

Also take a look at this excellent post by Yehuda Katz. Look up the section for Serialization.

Now, to save all your Profile models as JSON to a file, you can do something like this:

File.open("all_profiles.json", "w") { |f| f.write(Profile.all.to_json) }

Edit:

With your added explanation, here's some more info:

JSON of certain fields in your models:

Profile.all.collect { |p| { :name => p.name, :city => p.city } }.to_json

This would give you an array like this in Ruby:

[ {:name = "John", :city => "Liverpool"}, {:name = "Jimi", :city => "Seattle"} ]

And JSON like this:

[ {"name":"John", "city":"Liverpool"}, {"name":"Jimi", "city":"Seattle"} ]
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文