0

現在、コントローラーの1つで複数のJSONオブジェクトを返そうとしています。

  @chromosomes = @organism.chromosomes.to_json
  @file_data = current_user.files.to_json
  respond_to do |format|
    format.html
  end

ただし、フロントエンドでは次のことを行います。

 <%= @chromosomes %>

また

  <%= @file_data %>

JSONオブジェクトを取得せず、代わりに&quoteなどの文字列としてデータを取得します。次のような文字列を解析してみました

console.log($.parseJSON("<%= @chromosomes %>"));

しかし、それはまだ機能していません。これは、返送されるリクエストがhtmlであるためですか?

ありがとう!

4

4 に答える 4

2

コードは次のようになります。

respond_to do |format|
    format.html index.html.erb
    format.xml  { render :xml => @organism.chromosomes) }
    format.json { render :json => @organism.chromosomes) }
end
于 2012-04-09T14:06:56.800 に答える
0

Rails 2の場合、これは機能するはずです。

console.log($.parseJSON(<%= @chromosomes.dump %>));

Rails 3の場合、

console.log($.parseJSON(<%= @chromosomes.dump.html_safe %>));

String#dumpは文字をエスケープし、parseJSON()を機能させます。引用符は必要ないことに注意してください。

于 2012-04-09T15:06:06.033 に答える
0

あなたはただ必要です

render :json => @organism.chromosomes

あなたが編集しているのを見ると、あなたが欲しいものは以下のとおりだと思います。

console.log($.parseJSON("<%= raw @chromosomes %>"));
于 2012-04-09T14:04:08.890 に答える
0

問題は、Railsがjsonデータをデフォルトである文字列としてエンコードしたという事実にあることになりました。私が使用した問題を修正するために

 <%= @chromosomes.html_safe %>

フロントエンドに。これについての詳細はここで見つけることができます:

Railsでの奇妙なJSONJavascriptの問題

于 2012-04-09T14:53:23.450 に答える