Tôi đang cố gắng lưu một hàm băm tùy chọn trong một trường DB. Biểu mẫu có thể lưu dữ liệu vào DB nhưng không thể truy xuất lại dữ liệu đó khi tôi chỉnh sửa nó (ví dụ: tất cả các trường khác được điền sẵn ngoại trừ trường wp_options).Sử dụng Trình trợ giúp biểu mẫu đường ray với Lớp tùy chỉnh được nối tiếp
class Profile < ActiveRecord::Base
serialize :wp_options
end
Đây là lớp học của tôi tùy chỉnh:
class WP_Options
attr_accessor :wp_name, :wp_desc, :wp_limit
end
Ở dạng của tôi:
<%= form_for(@profile, :remote => true) do |f| %>
...
<%= f.fields_for :wp_options do |wp_options| %>
<%= wp_options.text_field :wp_name %>
<% end %>
...
Trong điều khiển của tôi:
@profile = Profile.new(:wp_options => WP_Options.new)
Trong cột DB của tôi 'wp_options':
--- !map:ActiveSupport::HashWithIndifferentAccess
wp_name: Test
Mọi lời khuyên sẽ thực sự được đánh giá cao.
Tôi cần tương đương wp_options để giữ nguyên dạng băm để tôi có thể lặp lại các mục nhập của nó. Vì vậy, tôi đã không thực hiện bất kỳ thay đổi nào đối với mô hình và đặt 'OpenStruct.new' ở dạng như sau: <% = f.fields_for: wp_options, OpenStruct.new (@ profile.wp_options) do | wp_options | %> Có thể nó có chế độ xem nhìn vào việc triển khai mô hình, nhưng tất cả những gì nó biết là wp_options là một hàm băm thay vì một đối tượng có phương thức attr. – Turadg