9

Tôi có một mô hình Flight được lồng trong một mô hình FlightLog. A FlightLog có thể chứa nhiều chuyến bay.Hiển thị các trường có lỗi cho các biểu mẫu lồng nhau trong Rails 3.2 + SimpleForm

Tôi đang sử dụng SimpleForm với bản cài đặt bootstrap, điều này làm cho nó có thể bao quanh các phần tử biểu mẫu có lỗi với lớp lỗi khi xác thực không thành công.

Vấn đề là, mặc dù xác thực được kích hoạt cho mô hình lồng nhau, các trường có lỗi bên trong simple_fields_for không được đánh dấu, vì vậy không thể xác định thuộc tính nào không hợp lệ.

Sau khi kiểm tra băm lỗi khi gọi hành động tạo, tôi có thể thấy rằng nó được điền chính xác với các lỗi ở cấp cao nhất và các lỗi của tài nguyên lồng nhau bên trong mỗi tài nguyên.

Làm cách nào tôi có thể sửa đổi hành vi của simple_form để thêm lớp lỗi vào nhóm kiểm soát của từng mô hình lồng nhau để phù hợp với hành vi của phụ huynh?

Xin cảm ơn trước.

enter image description here

Trả lời

2

tôi đã được sử dụng tùy chỉnh người truy cập thay vì các trường _id, vì vậy đó là lý do tại sao họ không được thông báo khi họ gặp lỗi. Cuối cùng tôi đã quyết định sử dụng f.error: attr_name theo từng người truy cập và thay đổi kiểu dáng theo cách thủ công bằng JS

20

Nếu bạn đang sử dụng simple_form với bootstrap, điều này không làm việc - bạn chỉ cần thiết lập một vài mặt hàng một cách chính xác:

1 - Sử dụng giấy gói simple_form bootstrap (từ simple_form 2.0) - bạn có thể tìm thấy chúng trong repo github theo config/initializers/simple_form.rb (https://github.com/rafaelfranca/simple_form-bootstrap)

2 - Đối với biểu mẫu lồng nhau để hiển thị lỗi, bạn phải chắc chắn rằng bạn cung cấp một đối tượng. f.simple_fields_for :nested_model sẽ không hoạt động, bạn cần sử dụng f.simple_fields_for parent_model.nested_model hoặc f.simple_fields_for :nested_model, parent_model.nested_model để biểu mẫu có thể nhận được đối tượng cần thiết.

Nếu bạn vẫn không nhận được bất cứ điều gì, xác minh rằng hình thức thực sự nhận được đối tượng bạn nghĩ rằng đó là, có lỗi, bởi xuất dữ liệu lỗi trên đối tượng lồng nhau của bạn: parent_model.nested_model.errors.full_messages.to_sentence

+0

Cảm ơn bạn đã đề xuất, tôi sẽ thử và cho bạn biết cách thực hiện! – bruno077

+0

'parent_model.nested_model.errors.full_messages.to_sentence' không hoạt động đối với tôi, nhưng' parent_model.errors.full_messages.to_sentence' hoạt động và hiển thị lỗi từ mô hình lồng nhau. Cảm ơn! –

+0

đây là một vị cứu tinh lớn thời gian tôi không thể cảm ơn đủ –

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