使用 ruby​​ 和 sinatra 保存循环构建的 html 文本中的所有用户条目

2023-12-08

我正在创建一个显示表格的网页。每条记录的末尾还有四列,它们是用户可以输入数据的文本字段。当用户点击底部的提交按钮时,我想保存所有文本字段中的所有数据并将其添加到我的表中。如何保存所有文本字段的数据?这是我的代码。

<h1>Testing Table</h1>
<form action="/table/" method="POST">
<table>
<thead>
<tr>
 <% event_column.each do |header| %>
    <th>
      <%= header %>
    </th>
  <% end %>
</tr>
</thead>
<tbody>
<% events.each do |event| %>
  <tr>
  <% event = event.first(14) %>
  <% event.each do |key, value| %>
    <td>
    <%= value %>
    </td>
  <% end %>
    <td><input type="text" name="event_description"></td>
    <td><input type="text" name="event_type">
    <td><input type="text" name="event_class">
    <td><input type="text" name="issue_expert"></td>
  </tr>
<% end %>
</tbody>
</table>
<br/>
<input type="submit">
<% ActiveRecord::Base.clear_active_connections! %>
</form>

我明白我的问题。由于当我尝试在 POST 方法中显示时,我使用相同的变量来写入所有用户输入的列

<td><%= params[:event_description] %></td>

它只会显示最后输入的值,因为它正在被重用。无论如何,当我点击提交时,我可以循环遍历所有 html 文本字段并保存所有数据吗?我被困在这里,我已经四处寻找。我了解如何保存最后一行的文本条目,但我不知道如何保存所有文本条目。我是 sinatra 的新手,所以我一定是做了一些根本性错误的事情。


默认情况下,当 Sinatra(使用 Rack)解析表单数据时,如果有任何重复的键,则使用最后一个键并覆盖其他键。但是,如果您使用以以下结尾的名称[]然后 Sinatra 创建一个包含具有该名称的所有条目的数组。

因此,在您的情况下,您需要更改输入元素的名称:

<input type="text" name="event_description[]">

(其他人也类似)。请注意[]在名称的末尾。

现在,当您提交表格时,params['event_description']将是一个包含所有提交给的项目的数组event_description输入元素。

Sinatra/Rack 查询解析实际上比这更复杂,因此您可以进一步处理您的表单。在你的循环中你可以做这样的事情:

<td><input type="text" name="events[][description]"></td>
<td><input type="text" name="events[][type]">
<td><input type="text" name="events[][class]">
<td><input type="text" name="events[][issue_expert]"></td>

现在,当您提交表单并对其进行解析时,params['events']将包含一个散列数组,每个散列都有键description, type, class and issue_expert。然后,您可以迭代该数组并根据需要处理数据。您可能想添加一个隐藏的id输入每个哈希值以确保每组数据都与正确的记录相关联(它可能看起来像<input type=hidden name="events[][id]" value="<% event.id %>">).

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 ruby​​ 和 sinatra 保存循环构建的 html 文本中的所有用户条目 的相关文章

随机推荐

  • 丝带和星星 - 如何在没有图像文件的情况下完成此操作?

    我需要在没有图像文件的情况下创建这个丝带和星星外观 附加图像 我知道如何将星星放入其中 但我需要像所附图像那样的丝带侧面 如果没有图像文件 只有纯 CSS 和 HTML 我该如何做到这一点 我认为需要在这里操纵边界半径 这就是我到目前为止所
  • $geoNear(聚合管道)未返回正确的文档

    使用时我没有得到正确的结果 geoNear在聚合管道中 使用典型的 find 查询的相同查询 使用 near 实际上确实返回了正确的结果 BUT 当删除相等条件时 在schedule key 两个查询都返回正确的数据 geoNear使用聚合
  • 如何通过拖放交换jtable中单元格的值

    我想将表的数据从一个表交换到同一列中的另一个表 注意 我只有两列 我的问题是我无法交换该值 另外 我希望仅在同一列上启用交换 否则表值将重置为其原始值 这是我的代码 JTable table 1 new JTable model table
  • Karate API 测试 - 从响应中删除重复值并将其与新响应进行比较

    我有一个场景 作为响应 我收到重复的值 And def abcName ListDataSet Response rowData 4 并打印 abcName BP Part Sht NCA MS BP Part Sht NCA MS BP
  • AutoHotKey 每隔执行一次就复制 (Ctrl-C) 出现奇怪问题

    我是编写自己的 AutoHotKey 脚本的新手 所以这一定是我在这里缺少的一些愚蠢的东西 The intent of the script is for the user to select some text and press the
  • Inno Setup:如何为“选择目标位置”页面指定多个目录?

    我有一个安装程序 其中包含 32 位和 64 位 dll 在 64 位系统上我想安装两个版本 在 32 位系统上 只安装 32 位版本 My Files 部分内容如下 Files Source C Users x64 my dll Dest
  • php mysqli_connect:客户端未知的身份验证方法[caching_sha2_password]

    我正在使用 PHPmysqli connect用于登录 MySQL 数据库 全部在本地主机上
  • 验证从 read 传入 bash 的参数数量

    我有一个关于验证有关用户在 bash 脚本中传递的参数数量的用户输入的问题 例如 如果我使用 if eq 2 then 这将检查是否有两个参数从命令行传递 如下所示 somescript sh arg1 arg2 但是如何验证用户在询问时是
  • 如何将树形视图转换为 xml?

    我目前正在开发一个项目 我需要将树视图转换为 xml 以便我可以将该 xml 数据发送到另一个端口 private void button1 Click object sender EventArgs e var rootElement n
  • 使用 Microsoft Graph 更改 Azure AD 的密码

    我原本计划使用 Azure AD Graph API 但后来在 Microsoft 文档中注意到有关使用 Microsoft Graph API 的建议 是否提供了更改用户密码的文档 string result Task Run async
  • 在 PHP 中执行字符串连接的最佳方法是什么?

    在 php 中 我们可以通过多种方式附加字符串 Method 1 sql SELECT field1 sql field2 sql field3 sql field4 sql FROM table1 sql WHERE condition1
  • 确保至少选中一个复选框

    我有一个带有多个复选框的表单 我想使用 JavaScript 来确保至少选中一个 这就是我现在所拥有的 但无论选择什么 都会弹出警报 JS 错误 function valthis if document FC c1 checked aler
  • 从日历中删除选定的事件

    我正在使用 JQuery Full Calendar 和 Spring MVC 你好 我做了一个演示 比如that 目标 我需要当用户单击她 他已经插入的事件时 出现一个对话框 并让他 她能够删除该事件或取消 问题 现在 每当用户单击任何一
  • 谷歌静态地图使用的两个相互矛盾的陈述

    我发现关于 google stati 地图 api 的限制使用的两个相互矛盾的陈述 根据这个链接 每天允许使用 25 000 次 根据这个链接每天允许使用 1000 次 现在我很困惑哪个是正确的 25000 是每个站点的限制 1000 是每
  • jQuery - 将方法应用于多个对象

    我想对许多声明的变量运行相同的方法 例如 说我有 var searchBtn search var signInBtn signin signInBtn removeClass active searchBtn removeClass ac
  • 将经过训练的超正方文件合并为一个

    我在 Mac 上使用最新版本的 Tesseract 我在一个文件夹中有一个 eng traineddata 在另一个文件夹中有一个 eng traineddata 我希望将我的训练数据文件合并到一个大的训练字体文件中 谁能告诉我该怎么做 我
  • C# 中的骨架化 OpenCV

    任何人都可以给我一个例子 说明如何在不使用距离变换的情况下进行骨架化 或者如果您有使用距离跑步变换的骨架化 我有一个用 C 编写的 OpenCV 示例 更多不起作用 cvlib CvDistTransform pimg ref ref ti
  • 在 ListModel 中传递数组

    我想知道如何在 ListModel 中传递数组 好的 在 QML 中我有一个 ListView 我将其设置为ListModel像这样 model ListModel id myList ListElement name card 0 boo
  • pd.get_dummies() 在大级别上缓慢

    我不确定这是否已经是最快的方法 或者我是否这样做效率低下 我想对一个具有 27k 可能级别的特定分类列进行热编码 该列在 2 个不同的数据集中具有不同的值 因此我在使用 get dummies 之前首先组合了级别 def hot encod
  • 使用 ruby​​ 和 sinatra 保存循环构建的 html 文本中的所有用户条目

    我正在创建一个显示表格的网页 每条记录的末尾还有四列 它们是用户可以输入数据的文本字段 当用户点击底部的提交按钮时 我想保存所有文本字段中的所有数据并将其添加到我的表中 如何保存所有文本字段的数据 这是我的代码 h1 Testing Tab