0

tagsRails アプリでjQuery Tokeninput を使用しています。これまで 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、既に存在するタグに限定するためです。

4

1 に答える 1

0

それで、私の理解が正しければ、あなたが投稿したコードは正しく動作しますか? しかし、JSON 出力をブラウザーにストリーミングするのではなく、ファイルに書き込みたいと思いませんか?

ソースで Rails が JSON をレンダリングする方法を見てみましょう。これは非常に簡単で、to_jsonレンダリング中のオブジェクトに対して関数を呼び出すだけです。

Yehuda Katz によるこの優れた投稿もご覧ください。Serializationのセクションを参照してください。

すべての Profile モデルを 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"} ]
于 2011-09-29T05:53:31.543 に答える