Postępuję zgodnie z samouczkiem Ruby on Rails i napotkałem problem podczas próby przekazywania zmiennych do podrzędnych.
Mój _user
stronniczość jest następująca
<li>
<%= gravatar_for user, size: 52 %>
<%= link_to user.name, user %>
</li>
Chciałbym podać liczbę dla wartości rozmiaru. Bez powodzenia próbuję wykonać następujące czynności.
<%= render @users, :locals => {:size => 30} %>
ruby-on-rails
dopplesoldner
źródło
źródło
locals
hash, aby użyć krótkiej wersji w następujący sposób:<%= render @users, size: 30 %>
Z interfejsu Rails w PartialRender :
Przykłady:
Możesz więc użyć przekazywania zmiennej lokalnej,
size
aby renderować w następujący sposób:a następnie użyj go w
_user.html.erb
częściowej:Zauważ, że
size: size
jest to równoważne z:size => size
.źródło
Zarówno
Lub
Aby użyć
locals
, potrzebujeszpartial
. Bezpartial
argumentu możesz po prostu wyświetlić zmienne bezpośrednio (nie w obrębielocals
)źródło
Nie używaj
locals
w Railsach 4.2+W Railsach 4.2 musiałem usunąć
locals
część i po prostu użyćsize: 30
. W przeciwnym razie nie przekaże poprawnie zmiennej lokalnej.Na przykład użyj tego:
źródło
Jeśli używasz JavaScript do renderowania, użyj
escape_JavaScript("<%=render partial: partial_name, locals=>{@newval=>@oldval}%>");
źródło
Trochę inaczej składniowo, ale moim zdaniem wygląda czyściej:
źródło
Możesz tworzyć zmienne lokalne po wywołaniu funkcji renderowania częściowej, dlatego jeśli chcesz dostosować część podrzędną, możesz na przykład renderować częściową
_form.html.erb
przez:w ten sposób możesz uzyskać dostęp częściowo do etykiety przycisku i adresu URL, są one różne, jeśli spróbujesz utworzyć lub zaktualizować rekord. na koniec, aby uzyskać dostęp do tych zmiennych lokalnych, musisz umieścić w swoim kodzie
local_assigns[:button_label]
(local_assigns[:name_of_your_variable]
)źródło