これ以上行く前に、私はこれを尋ねました。 MVCパラダイムに一見違反しているので、モデルにurl_forを配置してはいけない理由についての議論を知っています。この例では、UIとしてではなく、一部のリソースのAPIとして機能するようになっているため、私は同意しません。モデルのJSONでurl_forを
私はカスタム応答を作成している、とのリクエストごとに次のようになりますJSONオブジェクトを返す午前:私は、オブジェクトの各コントローラは、同封のURLを持っている(respond_withを使用して)で応答したい
obj = {
json: resource.as_json,
request_url: params[:id] ? resource_url : collection_url,
partial: get_partial(:partial, options),
flash: flash,
flash_partial: get_partial(:flash, options),
user: @current_user,
status: response.status,
}
をクライアント側では、特定のオブジェクトに対する追加の要求を送信する場所を簡単に追跡できます(この場合は、そのオブジェクトの状態にサブスクライブしているウィジェットによって異なるビュー表示を取得します)。
私はこれを行うための最善の方法はモデル側にあると思います。それは、Railsが望んでいるようです。単にurlで関数を追加してから、as_json(:methods =>:url)を使うだけです。残念ながら、url_forはモデル側では利用できず、ActiveRecord :: BaseにRails3.1互換の方法を含めることができませんでした。
class << ActiveRecord::Base
def url
url_for self
end
end
Model.new.as_json(:includes => :url)
私は代替案もあります。