0

Rails 3 へのかなり大きなプロジェクトの移行に取り組んでいます。

これが私のコントローラーアクションです:

def recent
  @account = Account.find(session[:account_id])
  render :layout => false
end

ここに私の recent.json.erb ファイルがあります

formatted_account = 
{
  :code = 1,
  :id = @account.id,
  :prefix = 2
}   
formatted_account.to_json()

jQuery.getJSON を使用してこのデータを取得しています。応答を取得すると、次のようになります。

[{"code":1,"id":"1 "prefix":2}]

それ以外の

[{code:1, id:1, prefix:2}]

このようなエスケープの問題を解決するには、他のコードで safe_html を使用する必要がありましたが、この場合、.json.rb ファイルを削除して json オブジェクトを適切な方法でレンダリングしないと解決方法がわかりません。

4

2 に答える 2

1

html_safe はトリックを行いました:

formatted_account = 
{
  :code = 1,
  :id = @account.id,
  :prefix = 2
}   
formatted_account.to_json.html_safe
于 2013-02-19T15:37:11.190 に答える
0

テンプレートから json を構築したい場合は、ERB ではうまくいかないため、何らかのビルダーを使用する必要があります。

JBuilder は、新しい Rails 3.2 Gemfile でコメントアウトされています。自分で使用したことはありませんが、きれいな DSL でよく考えられているようです。JBuilder github ページの README の下部にもリンクのリストがあります。

RABL は、JSON を構築するためのもう 1 つのツールであり、他の複数の形式をサポートしています。

JBuilder
RABL

于 2013-02-15T21:37:14.683 に答える