Rails "Magie" verstehen, wenn es darum geht, Partials zu rendern (und Einheimische in sie zu überführen).
Warum funktioniert das:
<%= render "rabbits/form" %>
Und diese Arbeit:
<%= render "rabbits/form", :parent => @warren, :flash => flash %>
aber das funktioniert nicht :
<%= render "rabbits/form", :locals => { :parent => @warren, :flash => flash } %>
Aber das tut:
<%= render :partial =>"rabbits/form", :locals => { :parent => @warren, :flash => flash } %>
Wie kann ich diese Nuancen nachschlagen, damit ich die Leute auf SO nicht stören muss?
ruby-on-rails
partial-views
Meltemi
quelle
quelle
Antworten:
Die kurze Antwort lautet: Die Rendermethode betrachtet das erste Argument, das Sie übergeben. Wenn Sie einen Hash übergeben (einschließlich
:partial => 'foo', :locals => {blah blah blah}
), werden alle Ihre Argumente als Hash übergeben und entsprechend analysiert.Wenn Sie eine Zeichenfolge als erstes Argument übergeben, wird davon ausgegangen, dass das erste Argument Ihr Teilname ist, und der Rest wird als Ihre Einheimischen übergeben. Bei diesem nachfolgenden Aufruf wird jedoch tatsächlich zugewiesen
:locals => your_locals_argument
, was in diesem Fall das Ganze ist:locals => {locals hash}
, anstatt nur{locals hash}
; dh Sie enden:locals => {:locals => {locals hash}}
eher mit als:locals => {locals hash}
.Mein Rat ist also, Werte immer explizit auf die gleiche Weise zu übergeben, damit Sie keine Probleme haben. Um dies zu erfahren, ging ich direkt zum Code selbst ( actionpack / lib / base.rb ,
render()
Methode in Rails 2; Rails 3 ist anders). Es ist eine gute Übung.Machen Sie sich außerdem keine Sorgen, dass Sie die Leute auf SO "belästigen". Deshalb gibt es diese Seite. Ich habe sogar etwas daraus gelernt.
quelle
Wenn Sie Folgendes angeben müssen: Einheimische, müssen Sie Folgendes angeben: teilweise oder: Vorlage
sollte arbeiten
quelle
clone https://github.com/rails/rails.git
? oder gibt es einen besseren weg Sorry , aber ich bin relativ neu in RoR und habe noch nicht gefunden eine gute / easy / konsistente Art und Weise Rails Dokumentation nachschlagen ... so dass es IST vorhanden.http://api.rubyonrails.org/
ist nicht leicht zu durchsuchen. und die Quelle von git ist auch nicht ... seufzUm ehrlich zu sein, ich kenne diese Anwendungsfälle nur, weil ich in den letzten Jahren mit Rails Schritt gehalten habe und die Ankündigungen gelesen habe, dass eine neue Methode hinzugefügt wurde. Ich mache oft selbst einen Fehler, aber normalerweise ist er leicht zu korrigieren.
Es ist einer dieser Teile der Rails-API, die nicht gründlich durchdacht wurden, wenn Sie mich fragen. Es hat im Laufe der Jahre immer mehr syntaktischen Zucker angesammelt, ohne das alte Verhalten zu missbilligen. Die Rendermethode hat Diabetes.
Um es noch schlimmer zu machen, verhält sich das Rendern in Controller und Ansicht unterschiedlich. Ich sehe mir auch den Inhalt des ersten Arguments an, um festzustellen, ob es sich um eine Datei, eine Vorlage, eine Aktion oder einen Teil handelt. Wenn es mit einem Schrägstrich beginnt, ist es eine Datei oder so etwas.
Ich bin dafür, wenn immer möglich, die kürzere Notation zu verwenden. Weil die kurzen Notationen die Absicht recht gut kommunizieren. Beim Lesen macht es normalerweise das, was Sie denken. Das Schreiben von Partials ist nicht einfach.
quelle
Hier ist die Quelle der Rendermethode von http://api.rubyonrails.org/classes/ActionView/Rendering.html#method-i-render :
Ich hoffe das hilft!
quelle