我在基本任務管理應用程序中允許任務分配給用戶(任務belongs_to用戶)。我爲此使用簡單表單。Ruby on Rails - 簡單表單自動完成關聯搜索
當前,該關聯以典型的方式填充,用戶下拉列表如下:<%= f.association :user, label_method: :name, value_method: :id, include_blank: false %>
。
但是,隨着用戶數量的增長,我正在將此更改爲自動填充表單字段以查找用戶。我試過按照Railscast on the subject,雖然它不使用簡單的形式,並沒有在我的實施工作。
這裏是我的形式,型號和.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">
雖然在開發工具控制檯以下錯誤:
Uncaught TypeError: this.source is not a function
關注HTML中的autocomplete="off"
和無法想象的類型錯誤幫助許多!
我很難過,所以非常感謝任何建議,讓這個工作!在此先感謝,讓我知道您的想法,史蒂夫。
這是一個夢幻般的* *答案。完美地工作,並且我遵循了您的建議並從URL中呈現信息。真的很感謝奧利弗的努力。 – SRack
很高興能幫到你!玩得開心編碼! –
我希望在閱讀這篇文章之前,先介紹一下在表單中使用jquery自動填充字段,然後更新隱藏關聯字段的方法。將重構使用此解決方案。謝謝! – Augusto