0

Railsアプリからデータを取得するために、クロスドメインのajax呼び出しを行っています。そのために、魅力のように機能する素晴らしい方法を見つけました。ただし、Rails はそれに付随するアソシエーションをレンダリングしません。その情報が必要なので、format.js を変更しようとしましたが、正しい出力のフォーマットにひどく失敗しました。

これは私が今私の旅行ショーメソッドに持っているものです(これは完全に機能します):

respond_to do |format|
  format.html # show.html.erb
  format.js { render_json @trip.to_json }  
end

しかし、@trip.triplocations もレンダリングしたいです。しかし、方法がわかりません。これを知っている人はいますか?

念のため、私が見つけた素晴らしい方法を次に示します。

def render_json(json, options={})
  callback, variable = params[:callback], params[:variable]
  response = begin
    if callback && variable
      "var #{variable} = #{json};\n#{callback}(#{variable});"
    elsif variable
      "var #{variable} = #{json};"
    elsif callback
      "#{callback}(#{json});"
    else
      json
    end
  end
  render({:content_type => :js, :text => response}.merge(options))
end

(小道具はhttp://www.sitepoint.com/json-p-output-with-rails/に移動します)

前もって感謝します!

4

1 に答える 1

1

(ところで: 本当にこの render_json メソッドが必要ですか?)

format.js {render :json=> @trip.as_json(:include => :triplocations)}

:include メソッドは関連付けを含めます。より高いレベルでも機能します。 http://api.rubyonrails.org/classes/ActiveModel/Serializers/JSON.html#method-i-as_json

于 2012-11-20T11:17:36.427 に答える