14 Stimmen

Was ist "respond_to" und "do" und "|format|" in diesem Rails-Code?

class PostsController < ApplicationController
  # GET /posts
  # GET /posts.xml
  def index
    @posts = Post.all

    respond_to do |format|
      format.html # index.html.erb
      format.xml  { render :xml => @posts }
    end
  end
...
  • Was genau ist "respond_to"? Gehört es zu Rails?
  • Was ist "do" und "|format|"? Warum gibt es vertikale Trennzeichen um format herum?
  • Wie weiß Rails über das Post-Modell Bescheid? Ich habe dieses Modell nicht importiert. (In Python/Django muss man ein Modell importieren, bevor man es verwenden kann)

Dies stammt aus dem Ruby on Rails Tutorial: http://edgeguides.rubyonrails.org/getting_started.html#setting-the-application-home-page

15voto

ennuikiller Punkte 44945

respond_to ist eine rails-spezifische Methode, die definiert, wie Anfragen für verschiedene Formate (wie xml und html) beantwortet werden. Das do und |format| kennzeichnen einen Ruby-Block, wobei do wie eine öffnende geschweifte Klammer wirkt und end als schließende Klammer, und |format| definiert die Blockvariable, die ihren Wert aus der yield Anweisung innerhalb von responds_to erhält.

3voto

Das "do" ist ein RUBY-Block, und das "|format|" könnte alles sein, es ist einfach eine Variable, die innerhalb dieses Blocks verwendet wird, hier ist ein weiteres Beispiel:

respond_to do |x|
  x.html # index.html.erb
  x.xml  { render :xml => @posts }
end

0voto

Dave Newton Punkte 156303

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X