Как настроить ответ to_json в Rails 3

Я использую response_with , и все подключено прямо к получать данные правильно. Я хочу настроить возвращаемые форматы json , xml и foobar СУХОЙ способ, но я не могу понять, как это сделать, используя ограниченный : only и : include . Это замечательно, когда данные простые, но со сложными находками они не соответствуют тому, что мне нужно.

Допустим, у меня есть сообщение, в котором has_many images

def show
  @post = Post.find params[:id]
  respond_with(@post)
end

Я хочу включить изображения в ответ, чтобы я мог сделать следующее:

def show
  @post = Post.find params[:id]
  respond_with(@post, :include => :images)
end

но я действительно не хочу отправлять объект изображения целиком вместе, просто URL. В дополнение к этому, я действительно хочу иметь возможность делать что-то вроде этого (псевдокод):

def show
  @post = Post.find params[:id]
  respond_with(@post, :include => { :foo => @posts.each.really_cool_method } )
end

def index
  @post = Post.find params[:id]
  respond_with(@post, :include => { :foo => @post.really_cool_method } )
end

… но все это СУХОЙ способ. В более старых проектах рельсов я использовал XML-конструкторы для настройки вывода, но реплицирую его через json, xml, html, что мне не кажется правильным. Я должен представить, что гуру рельсов добавили в Rails 3 что-то, чего я не осознаю для такого типа поведения. Идеи?

16
задан coneybeare 15 September 2010 в 15:13
поделиться