Ich bin auf der Suche nach einem Index aller Artikel zusammen mit einem vollständigen Artikel über JSON in meiner Rails App, aber ich habe ein wenig Mühe herauszufinden, wie es geht.Ruby on Rails Erweiterte JSON Serialisierung
Hier ist mein Controller jetzt:
if params[:id]
@article = Article.find(params[:id])
else
@article = Article.published.not_draft.by_recent.first
end
respond_to do |format|
format.js { render :json => @article.to_json(
:except => [ :created_at, :updated_at, :draft, :id, :publish ],
:include => {
:comments => {
:only => [:body]
}
}),
:callback => params[:callback]}
end
Was ich in der Antwort tun möchten ist, einen Index aller Artikel hinzufügen, etwa so:
@index = Article.find(:all, :select => 'id, title')
Der einzige Weg, ich Ich war in der Lage, es zu tun, wird den Index und den Artikel in einen Hash oder ein Array setzen und dann zu JSON bringen.
@response = { :item => @article, :index => @index }
Voll Code mit beiden:
@index = Article.find(:all, :select => 'id, title')
if params[:id]
@article = Article.find(params[:id])
else
@article = Article.published.not_draft.by_recent.first
end
@response = { :item => @article, :index => @index }
respond_to do |format|
format.js { render :json => @response.to_json(), :callback => params[:callback]}
end
Dies wäre gut, außer ich jetzt nicht :include
oder :except
angeben können und bekommen es richtig zu machen.
:except => {:item => [ :created_at, :updated_at, :draft, :id, :publish ]}...
Wenn das nicht funktioniert, machen es zu einem Objekt (beispielsweise ein OpenStruct) anstelle eines Hash: