2012-03-18 8 views
6

Acabo de iniciar mi aplicación Rails y tengo el siguiente problema: quiero usar la interfaz de usuario jQuery y autocompletar, y por lo tanto he usado gem rails3-jquery-autocomplete. También uso formtastic para mis formas de rieles.rails3-jquery-autocomplete id de referencia con formtastic

que tienen dos modelos:

cliente:

class Customer < ActiveRecord::Base 
    has_many :carts 
end 

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

carrito:

class Cart < ActiveRecord::Base 
    belongs_to :customer 
end 

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

Como se explica en el documento de la gema hice la configuración de autocompletar en mi CartController: autocomplete :customer, :lastname, :full => true

En mi opinión, con el formtastic código se ve como esto:

<%= 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' %> 

La principal pregunta que tengo es, cómo lidiar con las cosas de identificación. Quiero decir, quiero almacenar la identificación de referencia del cliente en el modelo de mi carrito y no el nombre en sí. Reconocí la posibilidad de tomar la opción :id_element para hacer referencia a un campo de entrada de ID para almacenar la identificación en el formulario. Me di cuenta de que parece haber un problema con la combinación formtastic y encontré un potencial solution.

Podría hacer esto, con un <%= f.input :customer_id, :as => :hidden %>, pero realmente no sé qué escribir en la línea: <%= f.input :customer, :as => :autocom.... ¿El cliente es la solución adecuada para esto? Este enfoque me daría el siguiente: "cart"=>{"customer"=>"26","customer_id"=>"0"}

¿Alguien tiene una idea, posiblemente me malinterpreten totalmente toda la: Lo id_element ...

Respuesta

2

También tiene un nombre de columna incorrecta en su migración.

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

bien lo encontré :)

por lo que necesita para hacer un hidden_field con customer_id y decirle a autocompletar para actualizar este valor de entrada. la etiqueta: 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 %> 

Así: id_element es el elemento de identificación que desea actualizar cuando se selecciona un resultado.

Cuestiones relacionadas