Rails - 将多个 HTML 输入的内容转换为单个字符串

Posted

技术标签:

【中文标题】Rails - 将多个 HTML 输入的内容转换为单个字符串【英文标题】:Rails - Turning multiple HTML inputs' contents into a single string 【发布时间】:2012-12-27 10:35:42 【问题描述】:

0。要点

使用 Rails 表单和输入,如何将大量文本输入连接到一个字符串属性中?

例如"A" 、 "B" 、 "C" 是 Rails 形式的每个输入,它们将被连接并读入 :string_field => "ABC"

1.背景

我正在制作一个允许用户制作自己的填字游戏的应用程序。这些谜题是我的 CrosswordPuzzle 类的成员,其中 :letters 属性(一个字符串)描述了谜题中字母和空格的布局。

例如,一个 3x3 的拼图如下...

FOO
O■U
BAR

...应该有"FOOO_UBAR":letters 属性(字符串代表从左到右、从上到下阅读的拼图)。

2。问题

用户首先通过指定拼图的大小(行 x 列)来创建拼图。这将创建一个该大小的空白拼图,每个单元格都是一个空白的 html 输入元素。然后用户可以在空白单元格中输入适当的字母并构建他们的拼图。

当我提交编辑表单时,我不明白如何处理所有这些单独的单字符输入并让 Rails 解释它们或将它们更改为拼图的单个 :letters 属性。此外,由于谜题的大小可能不同,单元格数量也不同,因此答案需要可扩展,以便可以将 100-600 个输入元素读入单个 100-600 个字符串。

任何帮助将不胜感激。

附:由于这是我在 *** 上的第一篇文章,如果我犯了任何错误,我提前道歉。 (我之前广泛检查过是否涵盖了类似的主题,但他们要么没有,要么我对术语太不熟悉而无法识别它们)

【问题讨论】:

你也想要垂直串联吗? 从某种意义上说,我正在尝试水平和垂直连接填字游戏的字符。我正在尝试生成一个字符串属性,其第一个字符是第 1 行第 1 列中的字符,其第二个字符在第 1 行第 2 列中...第 x 个字符在第 2 行第 1 列中,第 x+1 个字符是在第 2 行、第 2 列等中。我认为您的问题的答案是“否”......虽然字符连接是水平的,但生成的字符串(具有已知的拼图尺寸)已经代表了字符的垂直排列。跨度> 你可以看看填字游戏生成器的this interesting Ruby implementation。 【参考方案1】:

配置您的表单,使每个文本输入都具有类似 cell[?] 的名称,其中 ?是一个从零开始的数组索引。所以,cell[0]cell[1] 等。Rails 会将所有这些转换为单个参数条目 cell,这将是一个数组。然后,将它们连接在一起。

跳过铁轨......类似这样的事情。

1.8.7 > a = []
 => [] 
1.8.7 > a[0] = 'f'
 => "f" 
1.8.7 > a[1] = 'o'
 => "o" 
1.8.7 > a[2] = 'o'
 => "o" 
1.8.7 > a[3] = 'o'
 => "o" 
1.8.7 > a
 => ["f", "o", "o", "o"] 
1.8.7 > a.join
 => "fooo" 
1.8.7 > 

或者.. 做同样的事情,但是在客户端使用 javascript,将结果填充到隐藏的“字母”字段中,然后 Rails 不需要做任何事情。

【讨论】:

我一直在考虑用 Javascript 在客户端做这件事,只是看起来很乱。我想这将是我的临时解决方法,然后我将尝试您建议的命名修复。谢谢! 只是想跟进说我实施了客户端修复并且进展顺利。再次感谢你的帮助!附言隐藏表单字段是可接受的 Rails 做法吗?

以上是关于Rails - 将多个 HTML 输入的内容转换为单个字符串的主要内容,如果未能解决你的问题,请参考以下文章

通过 rails3-jquery-autocomplete 使用多个输入字段

通过 Rails 将对象作为变量发送到 Mandrill

在 Rails 中将本地时间转换为 UTC

对于 Rails 和 GraphQL 项目,如何定义多个同名查询?

如何将 Rails 5 API 应用程序转换为既可以作为 API 又可以作为应用程序的 Rails 应用程序?

将 HTML 表格的表单输入字段转换为 JSON