2010-04-02 22 views
31

Se ho un blocco di codice come questo:come posso generare json da response_to metodo in rotaie?

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

    respond_to do |format| 
     format.html # show.html.erb 
     format.xml { render :xml => @post } 
    end 
    end 

Come faccio ad aggiungere qualcosa di simile

format.json 

Eventuali suggerimenti, indicazioni, idee volentieri accolto ...

risposta

70

E 'proprio come gli altri formati tranne per il fatto che si utilizza render :json.

respond_to do |format| 
    format.html # show.html.erb 
    format.xml { render :xml => @post } 
    format.json { render :json => @post } 
end 
+1

Grazie amico - Ho appena capito leggendo la guida - http://guides.rubyonrails.org/layouts_and_rendering.html Ma tu mi hai fatto più veloce! –

10

o si può gestire come javascript

respond_to do |format| 
    format.js { render :json { :only => :name }.to_json } 
end 

poi basta accedere alla tua azione con ".js" alla fine.

+1

C'è un vantaggio in questo approccio rispetto a format.json? –

+1

@Oberon Dude, per quello che vale, ho visto 'format.js' molto più di quanto ho visto' format.json'. –

+0

non ho controllato. Normalmente con il percorso predefinito,: controller /: action.: Formato qualsiasi formato è possibile, ma non so se tutti i browser sono in grado di capire json mime-type .. –