Я слежу за учебником Ruby on Rails и столкнулся с проблемой при попытке передать переменные в партиалы.
Моя _user
часть выглядит следующим образом
<li>
<%= gravatar_for user, size: 52 %>
<%= link_to user.name, user %>
</li>
Я хотел бы передать число в качестве значения размера. Я безуспешно пытаюсь сделать следующее.
<%= render @users, :locals => {:size => 30} %>
ruby-on-rails
dopplesoldner
источник
источник
locals
хеш, чтобы использовать короткую версию, например:<%= render @users, size: 30 %>
Из API Rails на PartialRender :
Примеры:
Итак, вы можете передать локальную переменную
size
для рендеринга следующим образом:а затем используйте его в
_user.html.erb
частичном:Обратите внимание, что
size: size
это эквивалентно:size => size
.источник
Либо
Или
Для использования
locals
вам понадобитсяpartial
. Безpartial
аргумента вы можете просто перечислить переменные напрямую (не внутриlocals
)источник
Не использовать
locals
в Rails 4.2+В Rails 4.2 мне пришлось удалить
locals
часть и просто использоватьsize: 30
. В противном случае он не смог бы правильно передать локальную переменную.Например, используйте это:
источник
Если вы используете JavaScript для рендеринга, используйте
escape_JavaScript("<%=render partial: partial_name, locals=>{@newval=>@oldval}%>");
источник
Синтаксически немного отличается, но, на мой взгляд, выглядит чище:
источник
Вы можете создавать локальные переменные после вызова функции рендеринга в партиале, поэтому, если вы хотите настроить партиал, вы можете, например, отрендерить партиал
_form.html.erb
:таким образом вы можете получить доступ в частичном виде к метке для кнопки и URL-адреса, они будут другими, если вы попытаетесь создать или обновить запись. наконец, для доступа к этим локальным переменным вы должны ввести свой код
local_assigns[:button_label]
(local_assigns[:name_of_your_variable]
)источник