我的模型有四个字段。所以对于数据输入我通常会做这样的事情
<%= form_for @user do |f| %>
<p>
<%= f.label :field1 %><br />
<%= f.text_field :field1 %>
</p>
<p>
<%= f.label :field2 %><br />
<%= f.text_field :field2 %>
</p>
<p>
<%= f.label :field3 %><br />
<%= f.text_field :field3 %>
</p>
<p>
<%= f.label :field4 %><br />
<%= f.text_field :field4 %>
</p>
<p class="button"><%= f.submit %></p>
<% end %>
我想用一个text_area创建一个视图,以启用海量数据输入。
这个想法是将多行包含四个用逗号分隔的字段粘贴到text_area中。
在提交时,我会将数据推送到数据库中。
这样的表格怎么样?
我将在哪里解析text_area的内容以及如何保存数据?
由于 托马斯
P.S。虽然每个人都在考虑回复什么,但我想知道计算列是否会成为解决方案。我的意思是这里没有什么可以计算的,但至少我可以用模型中的字段创建一个表单,然后将数据分割到其他字段。
答案 0 :(得分:3)
您只需要一个虚拟属性。关于here,有一个非常有用的轨道。
基本上,您可以在模型中添加一个字段,例如称为mass_data
,并为其创建getter和setter,以便将mass_data
格式转换为与您的模型对应的四个单独字段。然后,您可以在该属性的表单中添加一个文本字段,就像它是一个真实的属性一样。
即,在您的控制器中,执行以下操作:
def mass_data
[#{field1},#{field2},#{field3},#{field4}].join(',')
end
def mass_data=(data)
split=mass_data.split(',')
self.field1=split.first
...
self.field4=split.last
end
然后只需在表单视图中添加一个文本字段:
<%= f.text_field :mass_data %>