我有一个类 MultipleChoice,有 4-5 个 options. options 是一个 String Array,在 DB 中是存储在一起的:“#opt1#opt2#opt3#opt4....”. 我在 Model 中实现了 options 的 reader 和 setter.
但是不知道如何在 form_for 表格中对 options 赋值。我先是使用
<%f.text_area :options%>
但是这样用户需要输入字符串"#opt1#opt2...",而我想要的是提供给用户四个单独的输入框,内部存储格式对用户是透明的。
现在的方法是实现了 opt1 opt2 opt3 opt4 函数的 reader 和 setter,form_for 中使用
<%f.text_area :opt1 %>
<%f.text_area :opt2 %>
<%f.text_area :opt3 %>
<%f.text_area :opt4 %>
这样可以用,但是代码很烂。我查找了 form_for 和 fields_for 的说明,也没有什么好办法。不知道大家有什么好办法。有没有办法让用户输入单独的“opt1”,..."opt4",而表单自动将之转成字符串数组,通过 options=函数赋值?
DB 层没法改,因为 MultipleChoice 是一个子类,和父类共享一个表格。