2011-09-29 22 views
0

我在我的Rails应用程序中使用jQuery Tokeninput for tags。我从来没有处理过JSON(我刚刚接触编程),但我想知道是否有创建方法,然后用Profile.all的字符串值填充json文件。在Profile.all中填充Rails字段的JSON文件

这里是在indexTagsController

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限制为已存在的标签。

回答

0

所以,如果我理解正确,你发布的代码工作正常吗?但是现在你不想将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 

这会给你一个这样的数组中的红宝石:

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

和JSON这样的:

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

这是一个好主意,让JSON缓存在公共目录。看起来非常好 – Anatoly

+0

我希望这会有道理,但我想要的是我的自动完成功能仅提供我的个人资料模型中的某些字段作为选项。例如,':name'不是一个选项,而是说':city'会。所以我很好奇如何从配置文件的特定部分创建JSON输出。 – tvalent2