Заполните файл JSON полями Rails в Profile.all - PullRequest
0 голосов
/ 29 сентября 2011

Я использую jQuery Tokeninput для tags в моем приложении Rails. Раньше я никогда не имел дело с JSON (я новичок в программировании), но мне было интересно, есть ли способ создать, а затем заполнить файл json строковыми значениями из Profile.all.

Вот это index в моем 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

Если это возможно, может кто-нибудь дать мне представление о том, как это можно сделать? Если нужно больше кода, дайте мне знать!

ОБЪЯСНЕНИЕ: Причина, по которой я хочу это сделать, - ограничить @tags тегами, которые уже существуют.

1 Ответ

0 голосов
/ 29 сентября 2011

Итак, если я правильно понимаю, код, который вы разместили, работает правильно?Но теперь вы не хотите транслировать вывод JSON в браузер, а записываете его в файл?

Посмотрите, как Rails отображает JSON в исходном .Это довольно просто, просто вызывает функцию to_json для любого объекта, который визуализируется.

Также взгляните на этот превосходный пост Иегуды Каца.Посмотрите в разделе Сериализация .

Теперь, чтобы сохранить все модели вашего профиля в виде 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"} ]
...