Ich folge dem Ruby on Rails-Tutorial und bin beim Versuch, Variablen an Partials zu übergeben, auf ein Problem gestoßen.
Mein _user
Teil ist wie folgt
<li>
<%= gravatar_for user, size: 52 %>
<%= link_to user.name, user %>
</li>
Ich möchte eine Zahl für den Größenwert übergeben. Ich versuche wie folgt ohne Glück.
<%= render @users, :locals => {:size => 30} %>
ruby-on-rails
Dopplesoldner
quelle
quelle
locals
Hash weglassen , um die Kurzversion wie folgt zu verwenden:<%= render @users, size: 30 %>
Aus der Rails-API auf PartialRender :
Beispiele:
Sie können also eine lokale Variable übergeben
size
, um Folgendes zu rendern:und dann verwenden Sie es im
_user.html.erb
Teil:Beachten Sie, dass dies
size: size
äquivalent zu ist:size => size
.quelle
Entweder
Oder
Zur Verwendung
locals
benötigen Siepartial
. Ohne daspartial
Argument können Sie Variablen einfach direkt auflisten (nicht innerhalblocals
)quelle
Nicht
locals
in Rails 4.2+ verwendenIn Rails 4.2 musste ich das
locals
Teil entfernen undsize: 30
stattdessen einfach verwenden . Andernfalls würde die lokale Variable nicht korrekt übergeben.Verwenden Sie zum Beispiel Folgendes:
quelle
Wenn Sie zum Rendern JavaScript verwenden, verwenden Sie
escape_JavaScript("<%=render partial: partial_name, locals=>{@newval=>@oldval}%>");
quelle
Syntaktisch etwas anders, aber meiner Meinung nach sieht es sauberer aus:
quelle
Sie können lokale Variablen erstellen, sobald Sie die Renderfunktion für einen Teil aufrufen. Wenn Sie also einen Teil anpassen möchten, können Sie den Teil beispielsweise rendern,
_form.html.erb
indem Sie:Auf diese Weise können Sie teilweise auf die Beschriftung für die Schaltfläche und die URL zugreifen. Diese unterscheiden sich, wenn Sie versuchen, einen Datensatz zu erstellen oder zu aktualisieren. Schließlich müssen Sie für den Zugriff auf diese lokalen Variablen Ihren Code eingeben
local_assigns[:button_label]
(local_assigns[:name_of_your_variable]
)quelle