Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 3 如何从rails中的文本区域填充多个字段?_Ruby On Rails 3 - Fatal编程技术网

Ruby on rails 3 如何从rails中的文本区域填充多个字段?

Ruby on rails 3 如何从rails中的文本区域填充多个字段?,ruby-on-rails-3,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

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

<%= 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 %>






我想创建一个带有一个文本区域的视图,以启用海量数据输入

其想法是将多行粘贴到文本区域中,每行包含四个由逗号分隔的字段

在提交时,我会将数据推送到数据库中

像这样的表单是什么样子的

在哪里解析文本区域的内容?如何保存数据

谢谢 托马斯


另外,当每个人都在思考如何回答时,我想知道一个经过计算的专栏是否是一个解决方案。我的意思是这里没有什么可计算的,但至少我可以创建一个表单,其中包含一个来自模型的字段,并在后期将数据拆分到其他字段。

您所需要的只是一个虚拟属性。那里有一条非常有用的铁轨

基本上,您将在模型中添加一个名为
mass\u data
的字段,并为其创建getter和setter,这些getter和setter将
mass\u data
格式转换为与您的模型对应的四个单独字段。然后,您可以在表单中为该属性添加一个文本字段,就像它是一个真实属性一样

i、 e,在控制器中,执行以下操作:

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
然后只需在表单视图中添加一个文本字段:


非常感谢Ankit,它工作得很好!我唯一剩下的问题是,我是否可以通过一次提交创建多个记录?我想在文本区域中粘贴10行,每行由四个字段组成。当我点击提交按钮时,应用程序应该为文本区域中的每一行添加一条记录,即10行,10条记录。谢谢Thomas您管理多记录输入了吗?我需要做完全相同的事情。我没有尝试过,但我认为您可以创建另一个虚拟属性,setter将10行解析为10个单独的mass_数据记录。