2011-02-09 43 views
10

Tôi đang cố gắng bọc đầu xung quanh cách cho phép người dùng tạo biểu mẫu tùy chỉnh với tất cả các loại trường. Nếu có một viên đá quý sẽ tuyệt vời, nhưng tôi dường như không thể tìm thấy một nơi nào.Rails 3: Biểu mẫu tùy chỉnh do người dùng tạo?

Vì vậy, tôi có một thiết lập DB như mà điều này:

t.integer :form_id 
    t.string :name 
    t.string :hint 
    t.integer :position 
    t.string :field_type 
    t.boolean :required 
    t.integer :size 
    t.boolean :multiple 
    t.text :values 
    t.timestamps 

Và đây là khá nhiều nơi tôi. Tôi không thể nghĩ làm thế nào để iterate thông qua field_type và trả về các giá trị, cũng như liên kết chúng với các hình thức thực sự được điền vào.

Cảm ơn

+0

Bao giờ đưa ra một giải pháp tốt cho điều này? cố gắng làm như vậy. –

+0

@noel_g Xem câu trả lời bên dưới – kkampen

Trả lời

12

Tôi giả sử bạn có một số loại Form mô hình, và sau đó một số loại Field mô hình, và một Form has_many :fields. Chính xác?

Tạo biểu mẫu đơn giản hơn: truy xuất biểu mẫu, lặp qua tất cả các trường và tùy thuộc vào loại, hiển thị đúng mã. Nếu bạn sử dụng một cái gì đó như formtastic hoặc simple_form mã thì khá đơn giản.

Nhưng để làm cho nó hoạt động, bên trong bộ điều khiển của bạn, bạn sẽ phải tạo một đối tượng giả, có một getter và setter cho tất cả các trường. Bạn có thể sử dụng một băm đơn giản cho điều này, hoặc OpenStruct (tốt hơn). Trong khi lặp qua các trường, hãy đặt giá trị băm có giá trị rỗng hoặc mặc định.

Tôi nghĩ bạn cũng muốn lưu kết quả của biểu mẫu? Tôi nghĩ cách dễ nhất là sử dụng mô hình như thế này

t.form_id :integer 
t.fields_data :text 

Và lưu trữ dữ liệu đã nhập vào trường văn bản, ví dụ: json hay gì đó. Bạn cũng có thể làm điều gì đó như

class FormData 
    belongs_to :form 
end 

class FormDataField 
    belongs_to :form_data 
    belongs_to :form_field 
end 

trong khi đây là sạch nhất (bạn có thể truy vấn trên các giá trị của điền trong các lĩnh vực cho một hình thức nhất định), nó là có lẽ quá nhiều của một overhead.

+0

Tôi hiểu câu nói của bạn và điều gì sẽ rõ ràng hơn. Bạn sẽ có một mẫu MVC hay cái này? Trong form_data những gì làm thế nào tôi sẽ liên kết nó với mỗi form_field? Nếu bạn biết về bất kỳ đá quý hoặc hướng dẫn nào tôi sẽ rất cảm kích. Cảm ơn. – kkampen

+0

kkampen, có vẻ như không có gì ngoài đó. 20 phút của Googling và đây là tài nguyên tốt nhất để tạo biểu mẫu tùy chỉnh. Tôi muốn tìm một giải pháp nguồn mở nhưng không giống như có một giải pháp ngoài kia. –

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