Не получается: id элемента с помощью автозаполнения jquery - PullRequest
1 голос
/ 16 февраля 2012

ребята, я использую автозаполнение jquery для моего приложения rails 3.1, чтобы получить страны, которые я хочу, что должно, когда я набираю инициалы страны, мне дается название страны, и когда я отправляю свою форму, она отправляет: id этогоэлемент в params Я сделал все, что упоминал, но все еще не получил id в качестве params, мой код

<%= form_for(@company_admin ,:url => admins_path) do |f| %>
 .
 .
 .
 .
 #all fields for company admin

          <%= f.fields_for :company do |company| %>
              #all fields for company
              .
              .

              <%= label_tag :Country %>
              <%= autocomplete_field_tag :country ,"" ,  autocomplete_country_name_admins_path ,:element_id=>"#country_id",:size => 75,:class => "field" %>
              </tr>
          <%end %>

          <%= f.submit 'Create' %> 


  <%end  %>

, и я получаю params вроде

Parameters: {"commit"=>"Create", "country"=>"india", "company_admin"=>{"company_attributes"=>{"address"=>"gt road", "category"=>"IT", "company_name"=>"google", "sub_domain"=>"classfieldidsub_domain", "telephone_number"=>"(+111) 111-111-1111"}, "gender"=>"Mr.", "last_name"=>"pqr", "email"=>"abv@gmail.com", "first_name"=>"abc"}, "authenticity_token"=>"X6bgRzJ5ydXJCyZ8+GhN57Z+O2K9gL1dsV15YQaXa84=", "utf8"=>"✓"}

т.е. в params[:country] imполучая "Индию", я хочу, чтобы она дала: id "Индии"

так что, ребята, помогите мне разобраться, спасибо

Ответы [ 4 ]

3 голосов
/ 28 марта 2014

Вам необходимо добавить скрытое поле. Вот где автозаполнение будет вставлять ваше значение идентификатора. Затем вы читаете его из хэша params в вашем контроллере

  <%= f.hidden_field :country_id, :id => "my_country_id" %>
  <%= f.autocomplete_field :country ,  autocomplete_country_name_admins_path ,:element_id=>"#my_country_id",:size => 75,:class => "field" %>
1 голос
/ 16 февраля 2012

попробуйте изменить :element_id=>"#country_id" на :element_id=>"#id"

      <%= f.fields_for :company do |company| %>
          ....
          <%= f.label :Country %>
          <%= f.autocomplete_field :country ,  autocomplete_country_name_admins_path ,:element_id=>"#id",:size => 75,:class => "field" %>
          </tr>
      <%end %>  

, также я призываю вас использовать метод помощников формы вместо тега помощника формы, если они доступны :)

-Обновления, добавляющие некоторый источник из rails3-jquery-autocomplete

  # Returns an input tag of the "text" type tailored for accessing a specified attribute (identified by +method+) and
  # that is populated with jQuery's autocomplete plugin.
  #
  # ==== Examples
  #   autocomplete_field(:post, :title, author_autocomplete_path, :size => 20)
  #   # => <input type="text" id="post_title" name="post[title]" size="20" value="#{@post.title}"  data-autocomplete="author/autocomplete"/>
  #
  def autocomplete_field(object_name, method, source, options ={})
    options["data-autocomplete"] = source
    text_field(object_name, method, rewrite_autocomplete_option(options))
  end

#
# Method used to rename the autocomplete key to a more standard
# data-autocomplete key
#
private

def rewrite_autocomplete_option(options)
  options["data-update-elements"] = JSON.generate(options.delete :update_elements) if  options[:update_elements]
  options["data-id-element"] = options.delete :id_element if options[:id_element]
  options
end

, похоже, что autocomplete_field генерирует :element_id в виде html5 element data attribute для текстового поля и снова из источника gems

:extra_data 
By default, your search will only return the required columns from the database needed to populate your form, namely id and the column you are searching (name, in the above example).

похоже, что они вернут id, отправив сообщение объекту с заданным element_id.

0 голосов
/ 01 сентября 2016

Вам нужно предоставить скрытое поле с некоторым идентификатором, чтобы идентификатор выбранного элемента заполнялся в этом скрытом поле. Например:

<%= f.hidden_field :country_id, id: 'my_country_id' %>
<%= f.autocomplete_field :country, autocomplete_country_name_admins_path ,id_element: '#my_country_id', size: 75, class: 'field' %>

Для тех, кто хочет использовать с Form_tag:

<%= hidden_field_tag :country_id, '', id: 'my_country_id' %>
<%= autocomplete_field_tag :country, autocomplete_country_name_admins_path ,id_element: '#my_country_id', size: 75, class: 'field' %>

Для подробного описания и справки,
Пожалуйста, посетите: http://www.rubydoc.info/gems/rails3-jquery-autocomplete/0.6.2

0 голосов
/ 16 февраля 2012

Я согласен с кодом выше, попробуйте это. код, который я собирался использовать, не был формой, как должно быть с помощником form_for.

После того, как вы выполните код автозаполнения с помощью помощника form_for, он должен вернуть параметры.

...