ruby-on-rails - 如何在 Rails 简单表单中显示关系键和值模型?
问题描述
在我的应用程序中,我有kids
和lessons
表。
孩子们有id
和name
专栏。课程有, id
,kid_id
列。key
value
课程key
并将value
保留孩子的课程名称和分数。
但我不知道如何在 Rails 中显示课程simple form
?在我的表格中,必须有 5 节课,比如数学、英语等。我想做的是:
Name <input type='text' name='name' placeholder='Kid Name'>
Math <input type='text' name='key["math"]' placeholder='Score'>
English <input type='text' name='key["english"]' placeholder='Score'>
History <input type='text' name='key["history"]' placeholder='Score'>
我不知道以 Rails 简单的形式显示并保存它。是否可以使用相同的名称并执行 foreach 以在我的控制器中保存课程表?
解决方案
将 gem nested_form添加到您的项目中,然后您可以这样做:
控制器动作
# Find Kid instance (or build one based on what action you are in)
@kid = Kid.find(<id>)
# Assuming you have an association `has_many :lessons` in `Kid` model, build 5 Lesson instances related to @kid
@lessons = %w[Math English History ...].each { |l| @kid.lessons.build(key: l) }
看法
<%= form_for @kid do |f| %>
<%= f.fields_for :lessons do |l| %>
<%= l.text_field :key %>
<%= l.text_field :value %>
<% end %>
<% end %>
警告:代码未经测试。它只提供了一个实现的想法。
推荐阅读
- node.js - 我不断收到 npm ERR!使用我的代码构建命令 react-scripts 的代码 1
- windows - 如何使用 start 命令在 cmd 中启动 wget 并仅显示进度条?
- node.js - 我收到了 500 个回复。我尝试这个的方式是错误的吗?还是我缺少什么?
- python - 按某些字符串值拆分 Json 数据(Python)
- tcp - TCPDUMP 连接失败 - 如何使用 Wireshark 分析 tcpdump 文件?
- visual-studio-code - 如何在 VS Code 上查看控制台
- c# - 如何在 Unity 中获取网络中的所有设备?
- python - 如果我试图找到它的索引,为什么无法识别用户输入的数字?
- ios - 音频缓冲区访问已下载的加密 HLS 音频流
- android - 使用java在android中添加数据存储空间的问题