#jquery #ruby-on-rails #forms #autocomplete
#jquery #ruby-on-rails #формы #автозаполнение
Вопрос:
Я новичок в Rails, и я изо всех сил пытаюсь использовать драгоценный камень автозаполнения Jquery. Я могу заставить автозаполнение работать нормально, но я не могу передать идентификатор элемента в свою базу данных. Несмотря ни на что, параметры показывают автоматически заполненное имя, поэтому поле ID в базе данных равно 0. У меня есть действие, настроенное в контроллере следующим образом:
class GroupsController < ApplicationController
autocomplete :nhood, :name
Маршрут также, похоже, работает нормально, поскольку автозаполнение функционирует должным образом. Ошибка где-то в форме, и я перепробовал массу вариантов, но ничего не работает. Цель состоит в том, чтобы передать идентификатор района, который соответствует автоматически заполненному имени района, в таблицу «планы». Вот форма:
<%= form_for(@plan, :url=> groups_createplan_path) do |f| %>
<div class="field">
<%= f.label :nhood_id %>
<%= f.autocomplete_field :nhood_id, autocomplete_nhood_name_groups_path,
:update_elements => {:id => '#id_element'}, :size=>50 %>
<%= f.submit "Submit" %>
<% end %>
Я начал с вариаций
:id_element => '#some_element', such as :id_element => '#nhood_id', or just
:id_element => '#id'
но, похоже, ничего не работало. Я довольно запутался, и я думаю, что внимательно следил за документацией gem, поэтому я не знаю, где ошибка.
https://github.com/crowdint/rails3-jquery-autocomplete
Если кто-то может помочь, это было бы очень ценно. Я был бы рад предоставить дополнительную информацию, если это необходимо. Спасибо
Обновить: Я должен также отметить, что firebug показывает ответ, который включает в себя «id», который я хочу: {«id»: «36», «label»: «Soulard», «value»: «Soulard»}
Следовательно, мой вопрос на самом деле заключается в том, как мне передать этот «id» в хэше параметров вместо «label»? Я продолжаю передавать «soulard», а не «36».
Ответ №1:
У меня была похожая ситуация, когда я пытался связать идентификатор курса с расписанием курса. Что сработало для меня, так это передать идентификатор в скрытом поле.
<%= f.label "Course Number" %><br />
<%= f.autocomplete_field :course_number, autocomplete_course_name_department_timetables_path, :update_elements => {:id => "#timetable_course_id"}%>
<%= f.hidden_field :course_id%>
Итак, что может сработать для вас, может быть
<%= f.label :nhood_id %>
<%= f.autocomplete_field :nhood_name, autocomplete_nhood_name_groups_path, :update_elements => {:id => '#plans_nhood_id'}, :size=>50 %>
<%= f.hidden_field :nhood_id %>