1

我跟着Auto-complete Associations上的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_namelocation_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

很簡單,不得不加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 

確保在您的應用程序佈局指定所需的文件或出於某種奇怪的原因,它將無法正常工作(導軌3.0.9)

<%= javascript_include_tag "autocomplete-rails", "jquery-ui-1.8.16.custom.min" %> 
1

我不確定,但是您是否嘗試過使用autocomplete_location_location_name_products_path

0

因爲我無法爲Jquery-Autocomplete工作,所以我剛開始使用Jquery-TokenInput插件作爲我的位置,只設置了限制爲1令牌,我也從Railscasts瞭解了很多。

相關問題