Ошибка Phoenix при использовании render_to_string с помощником text_input

Я пытаюсь использовать метод render_to_string для генерации html-части, которую я хочу транслировать на канал феникса.

У меня проблема в том, что я получаю ошибку не реализованного String.Chars, когда мой частичный содержит помощник text_input.

Мой код для метода render_to_string выглядит следующим образом:

Phoenix.View.render_to_string(MyAppWeb.ProductView, "row_partial", product: product)

Мой файл row_partial.ex:

<td><%= text_input :product, :name, value: product.name %></td>
<td><%= product.supplier.name %></td>

и ошибка, которую я получаю:

String.Chars not implemented for {:safe, [60, "input", [[32, "class", 
61, 34, "editable-input", 34], [32, "id", 61, 34, "product_name", 34], 
[32, "name", 61, 34, "product[name]", 34], [32, "type", 61, 34, "text", 
34], [32, "value", 61, 34, "Product #1", 34]], 62]}.

Я знаю, что это как-то связано с тем, как обрабатывается поле text_input, потому что все работает как положено, если я заменю поле input_text стандартным html-тегом ввода, как показано ниже:

<td><input value="<%= @product.name%>"></td>
<td><%= @product.supplier.name %></td>

Я полагаю, что это как-то связано с методом Phoenix.HTML.Safe, который экранирует код text_input и возвращает его безопасную HTML-версию, но я новичок в Elixir и Phoenix и не знаю, как обойти эту проблему.

Есть ли способ преобразовать экранированный HTML в то, что может обработать метод render_to_string?

Заранее благодарю за любую помощь.

0 ответов

Другие вопросы по тегам