Estou seguindo o tutorial do Ruby on Rails e me deparei com um problema ao tentar passar variáveis para parciais.
Meu _user
parcial é o seguinte
<li>
<%= gravatar_for user, size: 52 %>
<%= link_to user.name, user %>
</li>
Gostaria de passar um número para o valor do tamanho. Estou tentando da seguinte maneira, sem sorte.
<%= render @users, :locals => {:size => 30} %>
ruby-on-rails
dopplesoldner
fonte
fonte
locals
hash para usar a versão curta assim:<%= render @users, size: 30 %>
Na API do Rails no PartialRender :
Exemplos:
Portanto, você pode usar passar uma variável local
size
para renderizar da seguinte maneira:e depois use-o no
_user.html.erb
parcial:Note que
size: size
é equivalente a:size => size
.fonte
Ou
Ou
Para usar
locals
, você precisapartial
. Sem opartial
argumento, você pode apenas listar variáveis diretamente (não dentrolocals
)fonte
Não use
locals
no Rails 4.2+No Rails 4.2, tive que remover a
locals
peça e apenas usá-lasize: 30
. Caso contrário, não passaria a variável local corretamente.Por exemplo, use isto:
fonte
Se você estiver usando JavaScript para renderizar, use
escape_JavaScript("<%=render partial: partial_name, locals=>{@newval=>@oldval}%>");
fonte
Sintaticamente um pouco diferente, mas parece mais limpo na minha opinião:
fonte
Você pode criar variáveis locais depois de chamar a função de renderização em uma parcial; portanto, se você deseja personalizar uma parcial, pode, por exemplo, renderizá-la
_form.html.erb
por:Dessa forma, você pode acessar no rótulo parcial para o botão e o URL, esses serão diferentes se você tentar criar ou atualizar um registro. finalmente, para acessar essas variáveis locais, você deve inserir seu código
local_assigns[:button_label]
(local_assigns[:name_of_your_variable]
)fonte