tôi là tạo ra một danh sách các hộp kiểm cho một bộ sưu tập duy nhất như vậy:Thêm một thuộc tính dữ liệu giá trị phụ thuộc vào một bộ sưu tập hộp kiểm simple_form
= f.input :parts, as:check_boxes, collection: @parts_list
Tôi muốn có một số hộp kiểm trong bộ sưu tập để biến mất/tái xuất hiện tùy thuộc vào giá trị của một tiện ích con chọn cao hơn trong biểu mẫu. (ví dụ: chọn "Robot theo dõi" từ Robot chọn có nghĩa là hộp kiểm "Chân" sẽ biến mất và hộp kiểm "Bánh xe" xuất hiện, v.v.)
Điều tôi muốn làm là gắn thuộc tính dữ liệu được tính vào mỗi hộp kiểm Phần riêng lẻ, với giá trị thuộc tính liệt kê các Robot có thể sử dụng Phần đó; thì một số JS sẽ thực hiện công việc ẩn/hiện các hộp kiểm. Tuy nhiên, tôi không biết làm thế nào tôi có thể tạo ra những thuộc tính dữ liệu bằng cách sử dụng simple_form.
Tôi thường tạo một đầu vào "phần" tùy chỉnh, nhưng dường như có vấn đề với việc tạo các đầu vào bộ sưu tập tùy chỉnh; nó tìm kiếm một phương thức có tên (collection_parts) bên trong form_builder.rb, nó sẽ không tồn tại, và nếu tôi thử và mở rộng FormBuilder nó sẽ gửi cho tôi một lỗ thỏ lớn.
Tôi có thể viết một số JS để tải các dữ liệu attrs vào HTML được tạo ra, nhưng sau đó tôi phải tạo JS tùy chỉnh dựa trên dữ liệu Rails của tôi, và cảm thấy như cách sai để làm điều đó.
Nhưng làm thế nào bạn có thể làm điều này tự động? không có biến nào để ràng buộc chống lại… – andrewdotnich
b.object là phần tử riêng lẻ của bộ sưu tập, vì vậy bạn có thể thực hiện những việc như dữ liệu: {identifier: b.object.identifier} v.v., sẽ cung cấp cho mỗi hộp kiểm trong nhóm dữ liệu của riêng nó thuộc tính (đối diện với cùng một giá trị cho tất cả chúng nếu bạn đặt nó vào input_html) –
Thứ nhất, xin lỗi vì sự chậm trễ một năm rưỡi trong phản hồi! Tôi thích câu trả lời này tốt nhất vì nó rất đơn giản, mặc dù vẫn còn thêm mã Ruby & JS để viết. Tôi đã không thử nghiệm nó (từ lâu tôi đã chuyển từ cả dự án đó và chủ nhân) nhưng - giả sử nó hoạt động - việc đưa danh sách rô bốt cho mỗi phần trong phần tử dữ liệu tạo ra rất nhiều ý nghĩa và dễ dàng trận đấu với. Cảm ơn bạn! – yoz