У меня есть форма в базовом приложении для управления задачами, которое позволяет назначать задачи для пользователей (задача принадлежит пользователю). Для этого я использую Simple Form.Ruby on Rails - Поиск ассоциации автозаполнения формы Form
В настоящее время ассоциация заполняется обычным способом, с выпадающим списком пользователей как таковой: <%= f.association :user, label_method: :name, value_method: :id, include_blank: false %>
.
Однако, по мере роста числа пользователей, я хочу изменить это в поле формы автозаполнения, чтобы найти пользователей. Я пробовал следовать за Railscast on the subject, хотя он не использует Simple Form и не работает над моей реализацией.
Вот моя форма, модель и .coffee код:
Форма
<%= simple_form_for @task do |f| %>
...
<%= f.input :user_name, as: :search, data:
{autocomplete_source: User.pluck(:name)} %>
...
<%= f.button :submit %>
<% end %>
Модель
# Virtual attribute for autocomplete form field
def user_name
user.try(:name)
end
def user_name=(name)
self.user = User.find_by_name(name) if name.present?
end
tasks.coffee
jQuery ->
$('#task_user_name').autocomplete
source: $('#task_user_name').data('autocomplete-source')
Это порождает следующий HTML:
<input class="string search optional form-control
ui-autocomplete-input ui-autocomplete-loading" type="search"
value="Robert Strong" name="task[user_name]" id="task_user_name"
autocomplete="off">
Хотя следующее сообщение об ошибке в Dev инструментов консоли:
Uncaught TypeError: this.source is not a function
обеспокоенных о autocomplete="off"
внутри HTML и не может себе представить, TypeError помогает много!
Я в тупике, так что очень признателен за любые советы по получению этой работы! Спасибо заранее, дайте мне знать, что вы думаете, Стив.
Это является * фантастический * ответ. Работает отлично, и я следил за вашими советами и передавал информацию из URL-адреса. Очень ценю усилие Оливера. – SRack
Рад, что я могу помочь! Получайте удовольствие от кодирования! –
Хотелось бы, чтобы я прочитал это сообщение, прежде чем внедрять мой ужасный хакерский метод использования поля автозаполнения jquery в форме и затем обновить скрытое поле ассоциации. Будет ли рефакторинг использовать это решение. Благодаря! – Augusto