【问题标题】:Populate a JSON file with Rails fields in Profile.all使用 Profile.all 中的 Rails 字段填充 JSON 文件
【发布时间】:2011-09-29 04:12:23
【问题描述】:

我在我的 Rails 应用程序中为 tags 使用 jQuery Tokeninput。我以前从未处理过 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限制为已经存在的标签。

【问题讨论】:

    标签: jquery ruby-on-rails json jquery-tokeninput


    【解决方案1】:

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

    看看 Rails 如何在 the source 中呈现 JSON。这非常简单,它只是对正在渲染的任何对象调用to_json 函数。

    还可以查看 Yehuda Katz 的 this excellent post。查找序列化部分。

    现在,要将所有配置文件模型以 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"} ]
    

    【讨论】:

    • 最好将 json 缓存在公共目录中。看起来很不错
    • 我希望这是有道理的,但我想要的是让我的自动完成功能只提供我的个人资料模型中的某些字段作为选项。例如,:name 不是一个选项,但说:city 可以。所以我很好奇如何从 Profile 的特定部分创建 JSON 输出。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多