2012-03-18 15 views
6

Właśnie uruchomiłem aplikację Rails i mam następujący problem - chcę użyć interfejsu jQuery i autouzupełniania, a zatem użyłem gem rails3-jquery-autocomplete. Używam również formtastic do moich form szyn.Identyfikator odniesienia rails3-jquery-autocomplete z formtastic

mam dwa modele:

klienta:

class Customer < ActiveRecord::Base 
    has_many :carts 
end 

create_table :customer do |t| 
    t.column :lastname, :string 
    t.column :forename, :string 
end 

Koszyk:

class Cart < ActiveRecord::Base 
    belongs_to :customer 
end 

create_table :cart do |t| 
    t.column :costumer_id, :integer 
end 

Jak wyjaśniono w dokumencie klejnotu zrobiłem config autouzupełniania w moim CartController: autocomplete :customer, :lastname, :full => true

Moim zdaniem przy pomocy kodu formtastycznego wygląda to tak: to:

<%= semantic_form_for @cart do |f| %> 
    <%= f.inputs do %> 
    <%= f.input :customer, 
     :as => :autocomplete, 
     :url => autocomplete_customer_lastname_carts_path, 
     :id_element => '#cart_customer_id' %> 

Główne pytanie, które mam, to, jak radzić sobie z rzeczy id. Chodzi mi o to, że chcę przechowywać referencyjny identyfikator klienta w moim modelu koszyka, a nie samą nazwę. Rozpoznałem możliwość skorzystania z opcji :id_element w celu odniesienia się do pola wprowadzania identyfikatora w celu zapisania identyfikatora w formularzu. Zorientowałem się, że wydaje się, że istnieje problem z kombinacją formtastic, i znalazłem potencjał solution.

Mogę to zrobić z <%= f.input :customer_id, :as => :hidden %>, ale naprawdę nie wiem, co napisać w linii: <%= f.input :customer, :as => :autocom.... Czy: klient jest właściwym rozwiązaniem? Takie podejście daje mi następujące: "cart"=>{"customer"=>"26","customer_id"=>"0"}

Czy ktoś ma pomysł, może ja zupełnie nie rozumieją cały: id_element rzecz ...

Odpowiedz

2

też dostał złą nazwę kolumny do migracji.

create_table :cart do |t| 
    t.column :customer_id, :integer 
end 

ok znalazłem to :)

więc trzeba dokonać hidden_field z customer_id i powiedzieć, by pojawiła się zaktualizować tę wartość wejściową. tag: update_elements => {}

<%= autocomplete_field_tag "cart_customer_name", "" , autocomplete_customer_lastname_carts_path, :id_element => "#customer_customer_id", :update_elements => {} %><br /> 
<%= f.hidden_field :customer_id %> 

Tak: id_element jest elementem id, który chcesz zaktualizować po wybraniu wyniku.

Powiązane problemy