Каков наилучший способ вернуть несколько тегов из помощника Rails?

StackOverflow https://stackoverflow.com/questions/112197

  •  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/

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top