Стоит отметить, что если у вас есть массив объектов, которые вы хотите передать индивидуально в метод с другим вызывающим объектом, например:
# erb
<% strings = %w{ cat dog mouse rabbit } %>
<% strings.each do |string| %>
<%= t string %>
<% end %>
Вы можете использовать метод method
в сочетании с блокомПоведение расширения для упрощения:
<%= strings.map(&method(:t)).join(' ') %>
Если вы не знакомы, то, что делает method
, инкапсулирует метод, связанный с символом, переданным ему в Proc, и возвращает его.Амперсанд расширяет этот Proc в блок, который довольно красиво передается в map
.Возвращаемое значение map
является массивом, и мы, вероятно, хотим отформатировать его немного лучше, поэтому join
.
Предостережение заключается в том, что, как и в случае Symbol#to_proc
, вы не можете передавать аргументывспомогательный метод.