2012-03-18 26 views
6

Tôi vừa mới bắt đầu ứng dụng Rails và có vấn đề sau - Tôi muốn sử dụng giao diện người dùng jQuery và tự động hoàn thành, và do đó đã sử dụng gem rails3-jquery-autocomplete. Tôi cũng sử dụng formtastic cho các hình thức đường ray của tôi.id tham chiếu rails3-jquery-autocomplete với formtastic

Tôi có hai mô hình:

khách hàng:

class Customer < ActiveRecord::Base 
    has_many :carts 
end 

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

giỏ hàng:

class Cart < ActiveRecord::Base 
    belongs_to :customer 
end 

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

Như đã giải thích trong doc của đá quý tôi đã cấu hình tự động điền CartController tôi: autocomplete :customer, :lastname, :full => true

Theo quan điểm của tôi với mã formtastic trông giống như điều này:

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

Câu hỏi chính mà tôi có là, cách xử lý nội dung id. Ý tôi là, tôi muốn lưu trữ id tham chiếu của khách hàng trong mô hình giỏ hàng của tôi chứ không phải tên chính nó. Tôi đã nhận ra khả năng lấy tùy chọn :id_element để tham chiếu trường nhập id để lưu trữ id trong biểu mẫu. Tôi đã tìm ra, rằng có vẻ như có một vấn đề với sự kết hợp formtastic, và tìm thấy một tiềm năng solution.

Tôi có thể làm điều này, với số <%= f.input :customer_id, :as => :hidden %>, nhưng tôi thực sự không biết viết gì trong dòng: <%= f.input :customer, :as => :autocom.... Là: khách hàng giải pháp phù hợp cho điều này? Cách tiếp cận này sẽ cho tôi như sau: "cart"=>{"customer"=>"26","customer_id"=>"0"}

Có ai có một ý tưởng, có thể tôi hoàn toàn hiểu sai toàn bộ: điều id_element ...

Trả lời

2

Bạn cũng có một tên cột sai vào chuyển đổi của bạn.

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

ok tôi tìm thấy nó :)

vì vậy bạn cần phải thực hiện một hidden_field với customer_id và nói để tự động hoàn thành để cập nhật giá trị đầu vào này. thẻ: 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 %> 

Vì vậy: id_element là thành phần id bạn muốn cập nhật khi kết quả được chọn.

Các vấn đề liên quan