Каков наилучший способ вернуть несколько тегов из помощника Rails?
-
02-07-2019 - |
Вопрос
Я хочу создать скрытое поле и создать ссылку в одном помощнике, а затем вывести оба в мой erb.
<%= my_cool_helper "something", form %>
Следует ли публиковать результаты
link_to "something", a_path
form.hidden_field "something".tableize, :value => "something"
Как бы выглядело определение помощника?Детали того, что такое link_to и form.hidden_field, на самом деле не имеют значения.Важно то, как мне вернуть выходные данные из двух разных вызовов.
Решение
Есть несколько способов сделать это.
Помните, что существующие помощники rails, такие как link_to
, и т.д., просто выводите строки.Вы можете объединить строки вместе и вернуть это (что я и делаю большую часть времени, если все просто).
НАПРИМЕР:
link_to( "something", something_path ) + #NOTE THE PLUS FOR STRING CONCAT
form.hidden_field('something'.tableize, :value=>'something')
Если вы делаете что-то более сложное, вы могли бы просто поместить этот код в часть и вызвать своего помощника render :partial
.
Если вы делаете что-то более сложное, чем даже это, то, возможно, вам захочется взглянуть на errtheblog блок_то_частичный помощник, который довольно крут
Другие советы
Пока лучшее, что я придумал, это:
def my_cool_helper(name, form)
out = capture { link_to name, a_path }
out << capture { form.hidden_field name.tableize, value => 'something' }
end
Есть ли способ получше?
Если вы хотите буферизировать другие выходные данные, отличные от string, вы можете использовать concat
вместо того, чтобы +
.видишь это - http://thepugautomatic.com/2013/06/helpers/