text_field_tag ​​с предварительно заполненным текстом и пользовательскими параметрами - PullRequest
3 голосов
/ 23 декабря 2011

Я пытаюсь заставить это работать в одном из моих представлений:

<%= text_field_tag :sources, "Test", params[:sources] %>

но я получаю неопределенный метод 'stringify_keys' для nil: NilClass. Код

<%= text_field_tag :sources, "Test" %>

работает нормально и предварительно заполняет поле "Test" (но не передает параметры должным образом), в то время как код

<%= text_field_tag :sources, params[:sources] %>

передает параметры правильно, но не имеет текста "Test" там, где он мне нужен.

Кто-нибудь знает синтаксис или обходной путь?

1 Ответ

3 голосов
/ 23 декабря 2011

Синтаксис, который вы ищете, задокументирован :

text_area_tag (имя, содержимое = ноль, параметры = {})

Проблема с вашим кодом состоит в том, что с учетом трех аргументов text_field_tag ожидает, что третий будет хэш, но params[:sources] дает nil. Вы ожидаете, что это будет иметь другое значение? Где установлен params и что он содержит?

Если вы знаете, что params[:sources] иногда будет содержать хэш, а в других случаях будет nil (т.е. не задан), то вы можете использовать, например ,::1019*

<%= text_field_tag :sources, "Test", params[:sources] || {} %>

params[:sources] || {} будет вычислять пустой хэш ({}) всякий раз, когда params[:sources] ложно (например, nil), что позволит избежать ошибки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...