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对象?

这里最好使用"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/

最新更新