2011-08-17 28 views
5

Tôi không hoàn toàn chắc chắn những gì các điều khoản chính xác, nhưng những gì tôi đang cố gắng làm là trong một hình thức (tốt hơn là sử dụng đá quý simple_form) có một trong các yếu tố đầu vào,: tối đa, sử dụng cả hai một trường văn bản và chọn hộp. Người dùng sẽ nhập vào hộp văn bản một số và sau đó chọn từ hộp thả xuống giờ, ngày hoặc tháng. Vì vậy, 21 ngày, 3 tháng, 3 giờ, vv Khi biểu mẫu được gửi, tôi sẽ chuyển đổi thành ngày và lưu trữ nó trong cơ sở dữ liệu. Tôi biết làm thế nào để thay đổi kiểu đầu vào trong simple_form, nhưng có thể có hai đầu vào cho một biến không?đầu vào simple_form với nhiều trường

+0

Tôi đoán bạn có thể sử dụng 'attr_accessor' và sau đó xử lý logic sau này, trong một cuộc gọi lại như before_save. – socjopata

+0

Bạn có thể giải thích về cách attr_accessor sẽ được sử dụng? – Alexei

Trả lời

4

chắc :) Đây là ý tưởng của tôi:

Trước tiên, bạn xác định accessors trong mô hình sử dụng của bạn:

attr_accessor :thing, :another_thing, :and_another_thing 

Sau đó, theo quan điểm của mình, 'bên' form_for helper, bạn có thể viết ví dụ:

<%= form.input :thing, :as => :boolean %> 
<%= form.input :another_thing, :as => :text %> 

... hoặc bất kỳ thứ gì bạn muốn. (Lưu ý: Tôi đang sử dụng formtastic đây Bạn nên cân nhắc sử dụng các phương pháp Rails nếu bạn không sử dụng đá quý formtastic..)

Cuối cùng, bạn định nghĩa một callback trong bạn mô hình người dùng:

before_create :build_my_fancy_record 

def build_my_fancy_record 
    self.storage_field = "#{thing} #{another_thing}" 
end 
+0

Làm việc như một sự quyến rũ, cảm ơn bạn rất nhiều! – Alexei

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