如何从rails中的text_area填充多个字段?

时间:2011-08-25 12:12:16

标签: ruby-on-rails-3

我的模型有四个字段。所以对于数据输入我通常会做这样的事情

<%= 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。虽然每个人都在考虑回复什么,但我想知道计算列是否会成为解决方案。我的意思是这里没有什么可以计算的,但至少我可以用模型中的字段创建一个表单,然后将数据分割到其他字段。

1 个答案:

答案 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 %>