ruby - Ruby 为控制器的数组动态命名
问题描述
我必须创建 28 个数组,命名如下:
all_questions_1 = []
all_questions_2 = []
...
all_questions_28 = []
我不想手动创建它们,所以我试图通过很多失败的尝试找出如何动态地创建它们。
我检查了前面的问题,但收效甚微。
阅读评论后,我添加了关于我问这个问题的原因的附加解释
我要解决的是我在 Ruby_on_Railscontroller
中遇到的一个问题,该问题是一个名为replies
动作如下:
def replies
@project = Project.find(params[:project_id])
@paper = Paper.find(params[:paper_id])
@replies = Question.where("project_id = ? AND paper_id = ?", params[:project_id], params[:paper_id])
end
@replies
返回一个长对象,其中包含项目中包含的每篇论文的所有回复。因此,一篇论文可以被多个用户回答。每篇论文都在一个项目中。每个项目包含几篇论文。(用户可以回答所有 28 个问题:NA、NO、MAYBE、YES,我将其翻译为“-1”、“0”、“0.5”、“1”)
现在,一旦我有了它。我必须映射所有 28 个回复/问题。我想做以下事情。
@replies.map do |reply|
all_question_1 << reply.question_1.to_i
end
我想做 28 次(有 28 个问题),这就是为什么我需要 28 个数组。我这样做是因为我希望将字符串的可能答案"-1", "0", "0.5", "1"
更改为数字-1, 0, 0,5, 1
一旦这样做,我想为每个问题(all_question_1,all_question_2 ... all_question_28)计算包含-1或0或0.5或1的问题数量。
总结一下:
我需要构建以下代码 28 次,将 name_of_array_[NUMBER] 从 1 更改为 28:
all_question_1 = []
@replies.map do |reply|
all_question_1 << reply.question_1.to_i
end
na_question_1 = all_question_1.count(-1)
no_question_1 = all_question_1.count(0)
maybe_question_1 = all_question_1.count(0.5)
yes_question_1 = all_question_1.count(1)
len_question_1 = all_question_1.length
我不想手动操作,所以我想知道是否有办法将 _NUMBER 从 1 动态更改为 28。
解决方案
使用动态变量是我从未发现过的需要。您应该找到另一个数据结构来存储它们(例如,数组数组)。
例如,
all_questions_arrays = 28.times.map { |i| [i] }
print all_questions_arrays[20]
# => [20]
推荐阅读
- c# - 将实体框架核心 3.1 与 SQL Server 一起使用时指定列类型
- javascript - 在 reactstrap 中重定向后滚动不起作用
- python-3.x - 在 Numpy 数组的列中查找所有值的第一个实例
- jmeter - 我无法让精确吞吐量计时器工作
- javascript - 声音不是来自chrome中视频标签中的视频
- java - 打印所有可能具有恰好 k 个不同字符的子字符串(无论大小)
- mysql - 使用命令行连接到 2 个 MySQL 实例,无需密码交互
- mongodb - 大集合的性能损失
- c - 如何让我的 Linux 内核模块在所有处理器上工作?
- r - 根据前面的值按组替换一系列值