Я не работал с Rails3, поэтому никаких гарантий. но, похоже, это связано с тем, что ваш метод возвращает список.
Rails обычно форматирует внутренние структуры данных для вывода, экранируя специальные символы и отображая html экранированную интерпретацию ваших данных.
Попробуйте добавить .join в конец вызова карты, чтобы получить строку
[:en, :de].map{ |locale|
link_to locate.to_s.upcase , { :locale => locate }
...
}.join("<br/>")
Кроме того, предложение rwilliams aka r-dub использовать raw, вероятно, будет необходимым дополнением к этому коду. Однако raw в списке может привести к нежелательному результату, вероятно, из-за внутреннего вызова to_string
. Что является неявным соединением (""). Поэтому добавьте raw к вызову метода в дополнение к возвращению строки.
<%= raw my_method %>