Как вы автозаполнения от другой модели? - PullRequest
1 голос
/ 02 июля 2011

Я следовал за Railscast на Ассоциации автозаполнения , но я застрял на половине автозаполнения.Я не использую Prototype, но вместо этого Jquery, и я не знаю, как заставить половину автозаполнения работать.Как это делается?

Это настройка по сравнению с тем, что имеет Railscast:

Модель продуктов:

def location_name
    location.business_name if location
end

def location_name=(business_name)
    self.location = Location.find_by_business_name(business_name) unless business_name.blank?
end

Выше приведен виртуальный атрибут, в котором я определилмоё местоположение моделируется :business_name в location_name для формы <%= f.text_field :location_name %> моей продукции, потому что товар принадлежит локации.

РЕДАКТИРОВАТЬ: Это было с использованием Jquery Autocomplete Gem , но я открыт для альтернатив.

Мой продукт :name работает шарм;

<%= f.autocomplete_field :name, autocomplete_product_name_products_path %>

Но если я поставлю что-то вроде этого для :location_name, это бесполезно;

<%= f.autocomplete_field :location_name, autocomplete_product_location_name_products_path %>

Ответы [ 3 ]

3 голосов
/ 26 августа 2011

Это было просто, пришлось добавить attr_accessor, это мой готовый код из другого проекта:

<%= form_for(@business_address) do |f| %>
    <%= f.error_messages %>
    <%= f.label :name, "Address" %><br />
    <%= f.autocomplete_field :name, autocomplete_business_address_name_business_addresses_path %>
    <%= f.label :business_name, "Business" %>
    <%= f.autocomplete_field :business_name, autocomplete_business_name_business_addresses_path %>
    <%= f.submit %>
<% end %


class BusinessAddress < ActiveRecord::Base
    attr_accessible :name, :business_name
    belongs_to :business
    attr_accessor :business_name


    def business_name
        business.name if business
    end

    def business_name=(name)
        self.business = Business.find_or_create_by_name(name) unless name.blank?
    end
end

class BusinessAddressesController
  autocomplete :business, :name, :full => true
  autocomplete :business_address, :name, :full => true
end

routes.rb

resources :business_addresses do
        get :autocomplete_business_name, :on => :collection
        get :autocomplete_business_address_name, :on => :collection
end

Убедитесь, что вы указали в макете приложения необходимые файлы или по какой-то странной причине он не будет работать (rails 3.0.9)

<%= javascript_include_tag "autocomplete-rails", "jquery-ui-1.8.16.custom.min" %>
1 голос
/ 02 июля 2011

Я не уверен, но вы пробовали использовать autocomplete_location_location_name_products_path?

0 голосов
/ 17 июля 2011

Так как я не смог заставить Autocomplete работать для Jquery-Autocomplete, я только начал использовать плагин Jquery-TokenInput для своих местоположений и просто установил ограничение на 1 токен, я многому научился из Railscasts тоже.

...