Мой текущий ERB
файл выглядит следующим образом (который работает отлично),Rails: `next` метод перестает работать после перемещения его на рельсы частичной - Invalid следующая ошибка
<div>
<% [1,2,3,4,5].each do |el| %>
<% next if (el == 1) %>
<span><%= el %></span>
<% end %>
</div>
После того как я стараюсь, чтобы реорганизовать код и используя рельсы партиалы, это выглядит следующим образом,
<div>
<% [1,2,3,4,5].each do |el| %>
<%= render partial: "element", locals: {el: el} %>
<% end %>
</div>
и моя частичная _element.html.erb
есть,
<% next if (el == 1) %>
<span><%= el %></span>
Этот рефактор вызывает проблему SyntaxError (_element.html.erb:40: Invalid next)
Я не уверен, почему next
перестает работать после перемещения его в частичное. Любое обходное решение было бы оценено.
Заранее благодарен!
Я уверен, вы не должны использовать 'next' в частичной, так как это часть' .each' цикла. –
сначала есть орфографическая ошибка 'loclas' должна быть' locals'. Во-вторых, вы можете сделать это '<% = render (partial: 'element', locals: {el: el}), если el == 1%>'.Проблема, с которой вы сталкиваетесь, заключается в том, что частичное не имеет никакого контекста для самого блока, метод визуализации просто вызывается для каждого 'el' по очереди. Представьте себе, хотите ли вы использовать эту часть в другом месте, и она не была в цикле. Как вы ожидаете, что это будет работать? – engineersmnky
@engineersmnky - Спасибо за опечатку, исправил ее. И мое требование не так просто, как я упоминал выше. Я не могу показать весь свой код здесь, поэтому я попытался опубликовать аналогичную проблему с простыми строками кода. Но, пожалуйста, подумайте, что я использую это частичное как в местах, где цикл определен, так и частично полностью написан с условиями, поэтому ваше предлагаемое решение не работает для меня, хотя ваше намерение верно. Есть ли что-нибудь, что я могу сделать вместо «следующего» в моем примере выше? –