Sinatra / Datamapper:解析表格

时间:2013-07-25 08:20:21

标签: ruby sinatra datamapper

我有一个基于表格的表单,我打算将数据输入到我的应用程序中。每个<tr>都是通过Javascript为我想要添加的每个项目动态添加的。但是,我无法弄清楚如何管理发布数据。例如,我有这个:

<tr>
  <td><input type="text" name="name1"></td>
  <td><input type="text" name="value1"></td>
</tr>
<tr>
  <td><input type="text" name="name2"></td>
  <td><input type="text" name="value2"></td>
</tr>

我得到的params是:

{ "name1" => "derp", "value1" => "herp", "name2" => "Edward James Olmos", "value2" => "Boss voice"}

我如何将其解析为DataMapper对象?

1 个答案:

答案 0 :(得分:1)

最好在这里使用'arrayed'名称,以便所有动态添加的字段作为一个集合传递。 有两种方法可以使用数组名称来处理它,或者你自己编号:

<tr>
  <td><input type="text" name="array_of_names[2]"></td>
  <td><input type="text" name="array_of_values[2]"></td>
</tr>

(并在javascript中跟踪即将添加的数字作为全局变量) 看看你将获得的params结构 - 在服务器端管理和连接会更容易。

或者省略编号并使用它:

<tr>
  <td><input type="text" name="array_of_names[]"></td>
  <td><input type="text" name="array_of_values[]"></td>
</tr>

虽然在前端方面更容易编码,但是将名称与服务器端的值连接起来会有点困难(传递的params散列不会有数字键)。

通过谷歌搜索“javascript添加表单字段”很容易找到相关的js代码。以下是编号字段名称的示例:http://www.randomsnippets.com/2008/02/21/how-to-dynamically-add-form-elements-via-javascript/